我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...

Elastic Search并不是关系数据库,它内部不存在传统意义上的表结构,它管理的数据是一条条索引,可以通俗的理解为常见的关系数据库中的数据表(数据)。所以,苏南大叔把elastic search中索引的管理行为,看做是一个crud行为,这样也就更容易对相关行为做更好的理解。

苏南大叔:Elastic分布式搜索,如何对索引(表)进行增删改查管理? - elasticsearch索引增删改查
Elastic分布式搜索,如何对索引(表)进行增删改查管理?(图11-1)

苏南大叔的“程序如此灵动”博客,记录苏南大叔的代码编程经验总结。本文测试环境:win10elasticsearch@8.17.1kibana@8.17.1。本文的内容中,都使用kibana执行elasticsearch最原始的接口操作。

前文回顾

elastic search的安装及配置,参考文章:

kibana的安装及配置:

elastic search开启集群:

对分片Shards和副本Replicas概念的理解:

选择操作方式

因为原始接口的话,除了GET操作,还有PUT/DELETE/HEAD等操作,所以,还是在在kibanadevtools下进行操作,比较合适:

苏南大叔:Elastic分布式搜索,如何对索引(表)进行增删改查管理? - kibana-devtools操作
Elastic分布式搜索,如何对索引(表)进行增删改查管理?(图11-2)

本文要操作的例子里面,my_index就是要操作的索引的名字。本文操作的各种结果,还可以通过kibana的“索引管理”功能里面,进行验证。

苏南大叔:Elastic分布式搜索,如何对索引(表)进行增删改查管理? - 索引管理界面
Elastic分布式搜索,如何对索引(表)进行增删改查管理?(图11-3)

索引(表)是否存在

HEAD /my_index

在执行删除或修改之前,可以先查看一下要操作的索引是否存在。存在就返回200 - OK,不存在会返回404 - Not Found

苏南大叔:Elastic分布式搜索,如何对索引(表)进行增删改查管理? - 索引是否存在
Elastic分布式搜索,如何对索引(表)进行增删改查管理?(图11-4)

建立索引(表)

索引的建立,分为settingsmappings两个部分。settings部分可以不存在,使用默认。

  • settings中规定了分片shards和副本replicas的设置情况,分片一经设置,禁止修改。副本数是可有可无可修改的。
  • mappings.properties,实际上规定了字段的名字和类型,这个是必须的。
PUT /my_index
{
  "settings": {
    "number_of_shards": 3,
    "number_of_replicas": 2
  },
  "mappings": {
    "properties": {
      "field1": { "type": "text" },
      "field2": { "type": "keyword" }
    }
  }
}

苏南大叔:Elastic分布式搜索,如何对索引(表)进行增删改查管理? - 创建新的索引
Elastic分布式搜索,如何对索引(表)进行增删改查管理?(图11-5)

查看索引(表)

查看索引,其实也有三个操作。查看整体,查看settings,查看mappings

GET /my_index

苏南大叔:Elastic分布式搜索,如何对索引(表)进行增删改查管理? - 查看索引
Elastic分布式搜索,如何对索引(表)进行增删改查管理?(图11-6)

GET /my_index/_settings

苏南大叔:Elastic分布式搜索,如何对索引(表)进行增删改查管理? - 查看设置
Elastic分布式搜索,如何对索引(表)进行增删改查管理?(图11-7)

GET /my_index/_mappings

苏南大叔:Elastic分布式搜索,如何对索引(表)进行增删改查管理? - 查看字段
Elastic分布式搜索,如何对索引(表)进行增删改查管理?(图11-8)

修改索引(表)

修改的话,只需要设置需要修改的部分即可。和“创建”操作基本一致。

PUT /my_index/_mapping
{
  "properties": {
    "new_field": { "type": "text" }
  }
}

但是,需要注意的是:number_of_shards创建后,原则上不能修改。

PUT /my_index/_settings
{
  "number_of_shards": 5
}

苏南大叔:Elastic分布式搜索,如何对索引(表)进行增删改查管理? - 不能修改分区数
Elastic分布式搜索,如何对索引(表)进行增删改查管理?(图11-9)

会收到报错信息:

{
  "error": {
    "root_cause": [
      {
        "type": "illegal_argument_exception",
        "reason": "Can't update non dynamic settings [[index.number_of_shards]] for open indices [[my_index/ciQuucKlR7KvNlqwFFZnyg]] unless the `reopen` query parameter is set to true. Alternatively, close the indices, apply the settings changes, and reopen the indices"
      }
    ],
    "type": "illegal_argument_exception",
    "reason": "Can't update non dynamic settings [[index.number_of_shards]] for open indices [[my_index/ciQuucKlR7KvNlqwFFZnyg]] unless the `reopen` query parameter is set to true. Alternatively, close the indices, apply the settings changes, and reopen the indices"
  },
  "status": 400
}

删除索引(表)

DELETE /my_index

苏南大叔:Elastic分布式搜索,如何对索引(表)进行增删改查管理? - 删除索引
Elastic分布式搜索,如何对索引(表)进行增删改查管理?(图11-10)

打开关闭索引

打开和关闭的目的,就是是否允许数据写入。

苏南大叔:Elastic分布式搜索,如何对索引(表)进行增删改查管理? - 索引表是否启用
Elastic分布式搜索,如何对索引(表)进行增删改查管理?(图11-11)

POST /my_index/_open
POST /my_index/_close

结语

最基础常见的elastic数据操作,就这么多了。更多elastic经验文章,请点击:

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。

 【福利】 腾讯云最新爆款活动!1核2G云服务器首年50元!

 【源码】本文代码片段及相关软件,请点此获取更多信息

 【绝密】秘籍文章入口,仅传授于有缘之人   elastic