Elasticsearch使用建议 按照时间范围创建索引 在Elasticsearch用于存储跟时间相关的数据时,如日志数据,建议按照时间范围创建索引,而不是把所有数据都存放到一个超级大的索引里面。 基于时间范围索引。可以开始于一个按年的索引(logs2014)或按月的索引(logs201410)。当数据量变得非常庞大的时候切换到一个按天的索引(logs20141024)。 按照时间范围创建索引具有如下优势: 扩容的时候根据当前数据量选择合适的shard和Replica 针对时间范围创建的每个索引都可以灵活的设置Shard数和Replica数,从而可以避免在一开始设置一个很大的shard来考虑扩容的情况。在集群扩容之后也可以方便的设置时间范围周期来适配集群规模。 删除旧数据只需要删除旧的索引 DELETE /logs201409 利用alias机制可以在索引间灵活切换 例如,将logscurrent的alias机制中的logs201409索引删除,并在此alias机制中新增logs201410索引。 POST /aliases{"actions": [{ "add": { "alias": "logscurrent", "index": "logs201410" }},{ "remove": { "alias": "logscurrent", "index": "logs201409" }}]} 针对不再更新的索引,如上周或者上月的索引,进行索引优化以提高查询效率 将logs20140930索引下多个小segment合并成一个大的分片,以提高查询效率。 7.x之前版本 PUT /logs20140930/settings { "numberofreplicas": 0 } POST /logs20140930/forcemerge?maxnumsegments1 PUT /logs20140930/settings { "numberofreplicas": 1 } 7.x之后版本 PUT /logs20140930/settings { "numberofreplicas": 0 } POST /logs20140930/forcemerge { "maxnumsegments":1 } PUT /logs20140930/settings { "numberofreplicas": 1 }