当前位置:   article > 正文

elasticsearch的索引(增删改查)管理_resource_already_exists_exception

resource_already_exists_exception

1. 创建索引

# 语法
PUT /索引名/[类型名]/文档id
{
    请求体
}
  • 1
  • 2
  • 3
  • 4
  • 5

可以通过 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
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

索引名是唯一的,不能重复,重复创建会出错

{
  "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
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

创建索引请求,什么都不指定

PUT book
  • 1

创建索引请求,指定字段的类型,创建规则

PUT book
{
    "mappings": {
        "properties":{
            "name": {
                "type": "text"
            },
            "author": {
                "type": "text"
            },
            "age": {
                "type": "long"
            },
            "birthday" :{
                "type": "date"
            }
        }
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

索引创建成功后,可以向索引中写入文档

# 如果自己的文档字段没有指定,那么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"
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

默认情况下,索引是具备读写权限的,当然这个读写权限可以关闭。

例如,关闭索引的写权限:

PUT book/_settings
{
  "blocks.write": true
}
  • 1
  • 2
  • 3
  • 4

关闭之后,就无法添加文档了。关闭了写权限之后,如果想要再次打开,方式如下:

PUT book/_settings
{
  "blocks.write": false
}
  • 1
  • 2
  • 3
  • 4

其他类似的权限有:

  • blocks.write
  • blocks.read
  • blocks.read_only

2. 查看索引

请求查看方式,可以通过 GET 请求获取具体的信息

GET book

GET book/_settings
  • 1
  • 2
  • 3

也可以同时查看多个索引信息

GET book,test/_settings
  • 1

也可以查看所有索引信息

# Kibana Dev Tools
GET _all/_settings

# 网页访问
http://172.16.10.50:9200/_all/_settings
  • 1
  • 2
  • 3
  • 4
  • 5

获取索引的健康值

# 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%
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

获取索引版本的详细信息

# 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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

3. 修改

索引创建好之后,可以修改其属性

例如修改索引的副本数

PUT book/_settings
{
  "number_of_replicas": 2
}
  • 1
  • 2
  • 3
  • 4

使用put覆盖修改(版本号会增加)基本已不再采用

PUT /test3/_doc/1
{
    "name": "大将军",
    "age": 45,
    "birthday": "1970-01-11"
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

使用post修改,doc是固定格式,本例只修改name字段

POST /test3/_doc/1/_update
{
    "doc":{
        "name": "北凉王"
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

4. 删除索引

通过DELETE命令实现删除,根据你的请求判断是删除索引还是删除文档记录

DELETE book
  • 1

删除一个不存在的索引会报错。

5. 索引打开/关闭

关闭索引:

一个关闭的索引几乎不占用系统资源,如果一个索引暂时不用,可以关闭它

POST book/_close
  • 1

打开索引

POST book/_open
  • 1

当然,可以同时关闭/打开多个索引,多个索引用 , 隔开,或者直接使用 _all 代表所有索引。

6. 复制索引

索引复制,只会复制数据,不会复制索引配置(新复制的索引book_new是1个分片1个副本,而book索引是1个分片2个副本,并没有把索引配置复制过去)

POST _reindex
{
  "source": {"index":"book"},
  "dest": {"index":"book_new"}
}
  • 1
  • 2
  • 3
  • 4
  • 5

复制的时候,可以添加查询条件。

7. 索引别名

可以为索引创建别名,如果这个别名是唯一的,该别名可以代替索引名称。

POST /_aliases
{
  "actions": [
    {
      "add": {
        "index": "book",
        "alias": "book_alias"
      }
    }
  ]
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

将 add 改为 remove 就表示移除别名:

POST /_aliases
{
  "actions": [
    {
      "remove": {
        "index": "book",
        "alias": "book_alias"
      }
    }
  ]
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

可以添加多个别名,也可以删除多个别名

查看某一个索引的别名:

GET /book/_alias
  • 1

查看某一个别名对应的索引(book_alias 表示一个别名):

GET /book_alias/_alias
  • 1

可以查看集群上所有可用别名:

GET /_alias
  • 1
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/325672
推荐阅读
相关标签
  

闽ICP备14008679号