索引创建与删除
创建索引
迄今为止,我们简单的通过添加一个文档的方式创建了一个索引。这个索引使用默认设置,新的属性通过动态映射添加到分类中。现在我们需要对这个过程有更多的控制:我们需要确保索引被创建在适当数量的分片上,在索引数据之前 设置好分析器和类型映射。
- 为了达到目标,我们需要手动创建索引,在请求中加入所有设置和类型映射,如下所示:
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 }