ES军规
一、每个Index都配置一个Alias,并通过Alias访问Index。 二、每个Index禁用【_all】字段。 三、每个Index禁用【dynamic mapping】。 四、每个Index默认禁用【source】字段,如果需要开启,给出明确的理由。 五、禁用【_type】这个概念,每个Index默认只有【doc】这个type。 六、每个索引定义的时候,必须明确给出【number_of_shards】与【number_of_replicas】,数据量不大的情况下,前者是1,后者是2就好。 七、默认情况下,配置每个Index的【refresh_interval】为5s。 八、全量刷新Index时,先配置【refresh_interval】为-1,刷新结束后手动refresh,再将【refresh_interval】修改为默认值:5s。 九、每个Index Mapping定义时,尽可量详细的给出每个field的信息,如type、index、store、format、analyzer等。 十、重启ES时,最好做一次flush操作,清除translog与in-memory buffer,可以有效降低ES的启动时间。 十一、不定期对大Index做optimize操作,减少segment的数量以提升查询性能。【注】optimize期间最好关闭Index的更新入口。 十二、非全文检索时,禁用掉评分机制。 十三、代码中禁止使用WriteRequest.RefreshPolicy.IMMEDIATE 策略