我遇到了一个问题,我想将弹性搜索的结果数量减少到1000,无论匹配的匹配结果有多少,但这不会影响排名和评分。
我正在尝试terminate_after
,但这似乎只是告诉弹性搜索只是获得前N个结果而不考虑分数。如果我错了,请纠正我。
对此有何帮助?
修改
我已经在使用分页了。因此,使用From/Size中的大小只会影响当前页面的大小。但我想将总结果的大小限制为1,000,然后再加上分页。
答案 0 :(得分:5)
如何使用From/Size来返回结果的要求数量:
GET /_search
{
"from" : 0, "size" : 1000,
"query" : {
//your query
}
}
答案 1 :(得分:3)
您可以仅将大小指定为参数。
GET /_search?size=1000
{
"query" : {
//your query
}
}
答案 2 :(得分:3)
我知道这个问题被问到已经有一段时间了,但是我偶然发现了这个问题,我很惊讶没有人能给出正确的答案。
Elasticsearch索引具有一个index module,称为max_result_window
。您可以在动态索引设置下找到in the documentation。
index.max_result_window
搜索此索引的最大值from
+size
。默认为10000
。搜索请求占用的堆内存和时间与from
+size
成比例,这限制了该内存。请参见 Scroll 或 Search After ,以获取更有效的替代方法。
因此,基本上没有限制from
或size
(或它们的组合),而是将max_result_window
设置为1000
,ES最多只会返回1000次匹配每个请求。
如果您在单独的JSON文件中使用索引定义来创建索引,则可以在yourindexname.settings.index.max_result_window
下设置此值。
我希望这有助于仍在寻找解决此问题的人!
答案 3 :(得分:0)
你试过
吗?terminate_after
在到达查询执行将提前终止时,为每个分片收集的最大文档数。如果设置,响应将有一个boolean字段terminate_early以指示查询执行是否实际终止了。默认为no terminate_after。