索引的创建与设置

索引创建与删除

创建索引

迄今为止,我们简单的通过添加一个文档的方式创建了一个索引。这个索引使用默认设置,新的属性通过动态映射添加到分类中。现在我们需要对这个过程有更多的控制:我们需要确保索引被创建在适当数量的分片上,在索引数据之前 设置好分析器和类型映射。

  • 为了达到目标,我们需要手动创建索引,在请求中加入所有设置和类型映射,如下所示:
    PUT /my_index
    {
        "settings": { ... any settings ... },
        "mappings": {
            "type_one": { ... any mappings ... },
            "type_two": { ... any mappings ... },
            ...
        }
    
  • 事实上,你可以通过在 config/elasticsearch.yml 中添加下面的配置来防止自动创建索引。
    action.auto_create_index: false
    

注意:

今后,我们将介绍怎样用【索引模板】来自动预先配置索引。这在索引日志数据时尤其有效: 你将日志数据索引在一个以日期结尾的索引上,第二天,一个新的配置好的索引会自动创建好。

删除索引

  • 使用以下的请求来删除索引:
    DELETE /my_index
    
  • 你也可以用下面的方式删除多个索引
    DELETE /index_one,index_two
    DELETE /index_*
    
  • 你甚至可以删除所有索引
    DELETE /_all
    

索引设置

你可以通过很多种方式来自定义索引行为,你可以阅读Index Modules reference documentation,但是:提示: Elasticsearch 提供了优化好的默认配置。除非你明白这些配置的行为和为什么要这么做,请不要修改这些配置。

  • 下面是两个最重要的设置:number_of_shards,定义一个索引的主分片个数,默认值是 5。这个配置在索引创建后不能修改。number_of_replicas,每个主分片的复制分片个数,默认是 1。这个配置可以随时在活跃的索引上修改。
  • 例如,我们可以创建只有一个主分片,没有复制分片的小索引。
    PUT /my_temp_index
    {
        "settings": {
            "number_of_shards" :   1,
            "number_of_replicas" : 0
        }
    }
    
  • 然后,我们可以用 update-index-settings API 动态修改复制分片个数:
    PUT /my_temp_index/_settings
    {
        "number_of_replicas": 1
    }