ElasticSearch——数据建模最佳实践
如何建模
mapping 设计非常重要,需要从两个维度进行考虑:
- 功能:搜索、排序、聚合
- 性能:存储的开锁、内存的开销、搜索的性能
mapping 注意事项:
- 加入新字段很容易(必要时需要 update_by_query)
- 更新删除字段不允许(需要 reindex 重建数据)
最佳实践
1、不允许自动新增字段,将 dynamic 设置成 strict。默认为 true;
2、不需要分词的字段,将 type 设置成 keyword。默认使用了多字段特性,text、keyword这2种类型都有;
3、不需要检查的字段,将 index 设置成 false。默认为 true;
4、不需要排序和聚合的字段,将 doc_values 设置成false。默认为 true;
5、不需要检查、排序、聚合的字段,将 enable 设置成 false,仅做存储;
6、type = text 的字段,默认不可以排序,如需要排序,将 fielddata 设置成 true,默认为 false;
7、单个索引避免过多字段,默认最大值为1000;
8、避免空值引起的聚合不准确的问题;
9、避免使用正则查询;
10、尽量不要设计成索引关联,可冗余多一些字段,以空间换时间,如实在无法避免,按以下方式处理:
相关推荐
newbornzhao 2020-09-14
做对一件事很重要 2020-09-07
renjinlong 2020-09-03
明瞳 2020-08-19
李玉志 2020-08-19
mengyue 2020-08-07
molong0 2020-08-06
AFei00 2020-08-03
molong0 2020-08-03
wenwentana 2020-08-03
YYDU 2020-08-03
另外一部分,则需要先做聚类、分类处理,将聚合出的分类结果存入ES集群的聚类索引中。数据处理层的聚合结果存入ES中的指定索引,同时将每个聚合主题相关的数据存入每个document下面的某个field下。
sifeimeng 2020-08-03
心丨悦 2020-08-03
liangwenrong 2020-07-31
sifeimeng 2020-08-01
mengyue 2020-07-30
tigercn 2020-07-29
IceStreamLab 2020-07-29