ES学习2-索引管理

  1. 新建索引
  2. 更新索引
    1. 更新索引属性
    2. 更新mapping
  3. 参考资料

索引(Index)类似于MySQL里的数据库(database)或者表(table)概念。不同于MySQL需要提前建表,ES其实支持在插入数据的时候自动建立默认索引。当然,ES 也支持自定义索引的属性以及结构。

新建索引

在Kibana管理页面,我们可以通过REST APIs快速创建一个索引:

PUT /my-index-000001

也可以在创建时候指定索引的属性。比如:指定分片数为3,副本数为2(默认情况都是1),则有:

PUT /my-index-000001
{
  "settings": {
    "index": {
      "number_of_shards": 3,  
      "number_of_replicas": 2 
    }
  }
}

更多其他属性可以参考这里

也可以在创建时候使用Mapping指定索引结构里的字段,例如:

PUT /test
{
  "settings": {
    "number_of_shards": 1
  },
  "mappings": {
    "properties": {
      "field1": { "type": "text" }
    }
  }
}

更新索引

更新索引属性

创建好索引后,也可以更新该索引的属性(仅限动态属性):

PUT /my-index-000001/_settings
{
  "index" : {
    "number_of_replicas" : 2
  }
}

更新mapping

也可以更新索引的映射信息,比如新增字段或者修改字段设置:

PUT /my-index-00000/_mapping
{
  "properties": {
    "title":  { "type": "text"}
  }
}

还可以为上边的title字段再增加一个内嵌字段subtitle:

PUT /my-index-00000/_mapping
{
  "properties": {
    "title": {
      "properties": {
        "subtitle": {
          "type": "text"
        }
      }
    }
  }
}

注意,存量索引里的字段类型是不能修改的。因为修改字段类型会导致其与存量数据类型不匹配。你如果想修改字段类型,唯一办法是新建一个索引,然后使用reindex命令将存量数据导入新的索引中。

参考资料

https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-create-index.html
https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-reindex.html


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 duval1024@gmail.com

×

喜欢就点赞,疼爱就打赏