ElasticSearch FAQ & Tips

FAQ

单次查询最多返回记录数为10000

这个是因为ES查询的默认限制,可以使用以下两种方式进行解决

  1. 修改配置index.max_result_window的值
  2. 使用search_after获取10000条后的记录

内存分配为什么不推荐超出32G

当JVM内存小于32G时,会开启指针压缩技术,将64位的指针压缩成32位的指针.
heap size settings

桶查询的结果为什么不准确

当在ES中进行聚合查询时,会指定每个节点返回的桶的个数shard_size(默认大小是设置的size * 1.5 + 10)这个值可以无限大,当我们指定为3时可能会发生下面的情况1

实际上D(3+3=6)相加的值比C(4+1=5)来的大,但是得到的结果却是C

解决方式

  • 当数据量不大时,设置 Primary Shard 为 1;实现准确性
  • 在分布式数据上,设置 shard_size 参数,降低 doc_count_error_upper_bound 来提升准确度
  • 打开show_term_doc_count_error

参考链接

1. 聚合的精准度问题
Author: Sean
Link: https://blog.whileaway.io/posts/b574ad45/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.