在弹性搜索中增加max_result_window的后果

时间:2018-02-04 16:50:10

标签: elasticsearch

我们有一个默认max_result_window设置为10000的索引,但我们的数据正在增加,我们希望我们有超过100万个文档,我们的要求是滚动所有数据来自每个史诗中以1000开头结束,我们的文件不是很大,我会在下面写下一个例子:

{
"serp_query": "c=44444&ct=333333",
"uid": "5815697",
"notify_status": 0,
"created_at": "2018-02-04 10:00:00"
}

我已将max_result_window设置为10,000,000但此时我们的索引中有近50,000个文档,我已阅读了有关此增长后果的一些文本

  

高于的值会消耗大量的堆内存   搜索并执行搜索的每个分片。离开这个是最安全的   值,因为它是一个使用滚动api进行任何深度滚动   https://www.elastic.co/guide/en/elasticsearch/reference/2.x/breaking_21_search_changes.html#_from_size_limits

但是我们的文档不是太大,我们的弹性服务器有16GB专用RAM,猜测没有问题, 我写信要求两个问题,

  • 根据示例文档(我们所有的文档应该具有相同的字段),对于一百万个文档来说它可能有多大,我的意思是需要多少堆内存来处理它?<​​/ p>

  • 这是一个非常糟糕的解决方案,未来将面临我们的大问题吗?我们使用滚动而不是偏移并开始?

我们的查询不是很复杂,循环使用“created_at”降序排序的所有数据,并在每个史诗中获得1000个文档。

仅供参考:我们在2.7的弹性搜索引擎版本

1 个答案:

答案 0 :(得分:0)

只需与他人共享结果,

如果文档不是很大,并且查询不是很复杂,则增加max_result_window不会对性能产生很大影响。