1. 创建索引
# 语法
PUT /索引名/[类型名]/文档id
{
请求体
}
可以通过 postman 发送请求,也可以通过 kibana 发送请求,由于 kibana 有提示,所以我们选择kibana
索引名不能有大写字母
PUT Book
{
"error" : {
"root_cause" : [
{
"type" : "invalid_index_name_exception",
"reason" : "Invalid index name [Book], must be lowercase",
"index_uuid" : "_na_",
"index" : "Book"
}
],
"type" : "invalid_index_name_exception",
"reason" : "Invalid index name [Book], must be lowercase",
"index_uuid" : "_na_",
"index" : "Book"
},
"status" : 400
}
索引名是唯一的,不能重复,重复创建会出错
{
"error" : {
"root_cause" : [
{
"type" : "resource_already_exists_exception",
"reason" : "index [book/AlxnoOUPSPK_HBVPe1Qkwg] already exists",
"index_uuid" : "AlxnoOUPSPK_HBVPe1Qkwg",
"index" : "book"
}
],
"type" : "resource_already_exists_exception",
"reason" : "index [book/AlxnoOUPSPK_HBVPe1Qkwg] already exists",
"index_uuid" : "AlxnoOUPSPK_HBVPe1Qkwg",
"index" : "book"
},
"status" : 400
}
创建索引请求,什么都不指定
PUT book
创建索引请求,指定字段的类型,创建规则
PUT book
{
"mappings": {
"properties":{
"name": {
"type": "text"
},
"author": {
"type": "text"
},
"age": {
"type": "long"
},
"birthday" :{
"type": "date"
}
}
}
}
索引创建成功后,可以向索引中写入文档
# 如果自己的文档字段没有指定,那么es就会给我们默认配置字段类型
PUT book/_doc/1
{
"name": "雪中悍刀行",
"author": "烽火戏诸侯",
"age": 30,
"birthday": "2012-10-10"
}
PUT book/_doc/2
{
"name": "徐晓",
"author": "烽火戏诸侯",
"age": 50,
"birthday": "1970-01-11"
}
默认情况下,索引是具备读写权限的,当然这个读写权限可以关闭。
例如,关闭索引的写权限:
PUT book/_settings
{
"blocks.write": true
}
关闭之后,就无法添加文档了。关闭了写权限之后,如果想要再次打开,方式如下:
PUT book/_settings
{
"blocks.write": false
}
其他类似的权限有:
- blocks.write
- blocks.read
- blocks.read_only
2. 查看索引
请求查看方式,可以通过 GET 请求获取具体的信息
GET book
GET book/_settings
也可以同时查看多个索引信息
GET book,test/_settings
也可以查看所有索引信息
# Kibana Dev Tools
GET _all/_settings
# 网页访问
http://172.16.10.50:9200/_all/_settings
获取索引的健康值
# Kibana Dev Tools
GET _cat/health
# 网页访问
http://172.16.10.50:9200/_cat/health
# 正确结果
1637573550 09:32:30 kubernetes-logging green 12 8 2238 1119 0 0 0 0 - 100.0%
获取索引版本的详细信息
# Kibana Dev Tools
GET _cat/indices?v
# 网页访问
http://172.16.10.50:9200/_cat/indices?v
# 结果
health status index uuid pri rep docs.count docs.deleted store.size pri.store.size
green open bj-task-hdfs-rpc-2021.11.15 AH22mKXERRG6kCfE-Vq9jw 5 1 49391153 0 22.2gb 11.1gb
green open k8s-prod-gpu-wanda-2021.11.22 IpKILXjKSuihPVVHpg_vCQ 5 1 332 0 1.7mb 885.9kb
green open nnfsns-manage13-2021.11.11 sjLC48XeRwKrUXQ8kbMhNw 5 1 1440 0 3.7mb 1.8mb
green open bj-hdfs03-hdfs-nn-2021.11.20 WCeN2NxCQya13Qaq-U8wTA 5 1 7268 0 4.9mb 2.5mb
green open .monitoring-es-6-2021.11.21 FGdKSe_yQy2q25-NeqH-Lw 1 1 3019506 14377 3.8gb 1.8gb
green open nnfsns-manage13-2021.11.08 r9OEKuWwSMivqXHfTZ1mrw 5 1 1440 0 3.6mb 1.8mb
green open k8s-cattle-system-2021.11.21 LjQ_-s6LSrCxD3T8MTHFKg 5 1 6 0 204.8kb 102.4kb
green open bj-task-hdfs-rpc-2021.10.10 i2zTQ-xhRsmAtqFrHbq-Ug 5 1 42970461 0 18.7gb 9.3gb
green open bj-hdfs02-hdfs-jn-2021.11.21 F4hKUvJARNW0yDxoC3c0MQ 5 1 1060 0 940.7kb 487.7kb
green open nnfsns-manage13-2021.11.14 Doi-UOLCQjaChrhaV7cnow 5 1 1440 0 3.8mb 1.9mb
3. 修改
索引创建好之后,可以修改其属性
例如修改索引的副本数
PUT book/_settings
{
"number_of_replicas": 2
}
使用put覆盖修改(版本号会增加)基本已不再采用
PUT /test3/_doc/1
{
"name": "大将军",
"age": 45,
"birthday": "1970-01-11"
}
使用post修改,doc是固定格式,本例只修改name字段
POST /test3/_doc/1/_update
{
"doc":{
"name": "北凉王"
}
}
4. 删除索引
通过DELETE命令实现删除,根据你的请求判断是删除索引还是删除文档记录
DELETE book
删除一个不存在的索引会报错。
5. 索引打开/关闭
关闭索引:
一个关闭的索引几乎不占用系统资源,如果一个索引暂时不用,可以关闭它
POST book/_close
打开索引
POST book/_open
当然,可以同时关闭/打开多个索引,多个索引用 , 隔开,或者直接使用 _all 代表所有索引。
6. 复制索引
索引复制,只会复制数据,不会复制索引配置(新复制的索引book_new是1个分片1个副本,而book索引是1个分片2个副本,并没有把索引配置复制过去)
POST _reindex
{
"source": {"index":"book"},
"dest": {"index":"book_new"}
}
复制的时候,可以添加查询条件。
7. 索引别名
可以为索引创建别名,如果这个别名是唯一的,该别名可以代替索引名称。
POST /_aliases
{
"actions": [
{
"add": {
"index": "book",
"alias": "book_alias"
}
}
]
}
将 add 改为 remove 就表示移除别名:
POST /_aliases
{
"actions": [
{
"remove": {
"index": "book",
"alias": "book_alias"
}
}
]
}
可以添加多个别名,也可以删除多个别名
查看某一个索引的别名:
GET /book/_alias
查看某一个别名对应的索引(book_alias 表示一个别名):
GET /book_alias/_alias
可以查看集群上所有可用别名:
GET /_alias