[es]ES数据查询调优1

网友投稿 1103 2022-05-28

image.png

•对于只需要精确查询的字段,例如时间戳,应该设置为keyword。

•对需要进行全文检索的字段设置合理的分词器,不同的分词器查询效率相差较大。

合理地向Elasticsearch中进行数据索引时,也要注意以下几点:

1 Elasticsearch可以对数据做动态mapping,但请不要这么做,尽量在创建index时便赋予index固定的mapping配置。当大量数据写入的同时伴随着新的字段的增加,会造成大量的put_mapping操作,从而造成EsMaster阻塞,影响整个Elasticsearch集群的运行。不建议使用动态mapping,如果需要使用动态mapping,建议尽量使用较为精准的匹配规则,杜绝*全匹配的通配符操作。当Elasticsearch的实例总数在500以上时,禁止使用动态mapping。

2 如果数据量巨大,可以分的字段个数太多,如超过1000个字段,最好给字段赋予不同的级别索引到不同的index中。例如,常用的查询字段可以写入到一个index中,字段长度较长且不常用的索引到另一个index中。

3.合理的设计Mapping,根据实际的业务数据去设置优化Mapping,根据具体的字段和需求去选择对应的类型设置,可参考如下几点:

1.字符串类型默认分成:text和keyword两种类型。需要分词:text,否则keyword。

[es]ES数据查询调优1

2.枚举类型,基于性能keyword,即便是整形。

3.数值类型,尽量选择贴近大小的类型。

4.日期类型,如果需要基于时间轴做分析,必须date类型,如果仅需秒级返回,建议使用keyword。

5.其他类型,布尔、日期、地理位置,使用对应的类型即可。

6.如果某个字段不需要被检索,将“index”参数设置为“false”。

7.如果字段完全不需要检索,排序,聚合分析,将“enable”参数设置为“false”。

8.“_all”字段,默认将写入的字段拼接成一个大的字符串,并对该字段进行分词,用于支持整个doc的全文检索,“_all”字段在查询时占用更多的CPU,同时占用更多的磁盘存储空间,默认为“false”,不建议开启该字段。

9.norms字段,norm是索引评分因子,如果不用按评分对文档进行排序,设置为“false”,默认是“true”。

10._source字段,默认是开启的,如果不需要update、reindex和高亮操作,将“_source”设置为“false”,节省更多的磁盘空间。

Elasticsearch Java 实时流计算服务 CS

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:纸质文档管理系统降低文档管理成本和精力
下一篇:ES数据写入调优2
相关文章