FAQ
单次查询最多返回记录数为10000
这个是因为ES查询的默认限制,可以使用以下两种方式进行解决
- 修改配置index.max_result_window的值
- 使用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. 聚合的精准度问题 ↩