限制Elastic Search返回的结果数

时间:2017-01-23 09:45:34

标签: elasticsearch full-text-search

我遇到了一个问题,我想将弹性搜索的结果数量减少到1000,无论匹配的匹配结果有多少,但这不会影响排名和评分。

我正在尝试terminate_after,但这似乎只是告诉弹性搜索只是获得前N个结果而不考虑分数。如果我错了,请纠正我。

对此有何帮助?

修改

我已经在使用分页了。因此,使用From/Size中的大小只会影响当前页面的大小。但我想将总结果的大小限制为1,000,然后再加上分页。

4 个答案:

答案 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 ,以获取更有效的替代方法。

因此,基本上没有限制fromsize(或它们的组合),而是将max_result_window设置为1000,ES最多只会返回1000次匹配每个请求。

如果您在单独的JSON文件中使用索引定义来创建索引,则可以在yourindexname.settings.index.max_result_window下设置此值。

我希望这有助于仍在寻找解决此问题的人!

答案 3 :(得分:0)

你试过

吗?
terminate_after

在到达查询执行将提前终止时,为每个分片收集的最大文档数。如果设置,响应将有一个boolean字段terminate_early以指示查询执行是否实际终止了。默认为no terminate_after。