限制Elastic Search返回的结果数

Roh*_*agh 10 full-text-search elasticsearch

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

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

对此有何帮助?

编辑:

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

Abh*_*ain 9

您可以将大小指定为参数。

GET /_search?size=1000
{
    "query" : {
        //your query
    }
}
Run Code Online (Sandbox Code Playgroud)


Kul*_*gar 8

如何使用From / Size来返回所需的结果数:

GET /_search
{
    "from" : 0, "size" : 1000,
    "query" : {
        //your query
    }
}
Run Code Online (Sandbox Code Playgroud)


mum*_*itz 5

我知道这个问题自从被问到之后就有点老了,但我偶然发现了这个问题,我很惊讶没有人能给出正确的答案。

Elasticsearch指数有一个索引模块max_result_window。您可以在动态索引设置的文档中找到它。

index.max_result_window
搜索此索引时from+ 的最大值size。默认为10000. 搜索请求占用堆内存和时间与from+成正比size,这限制了内存。请参阅ScrollSearch After以获得更有效的替代方法。

因此,基本上不是限制fromsize(或它们的组合),您设置max_result_window1000并且 ES 将只返回每个请求最多 1000 次点击。

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

我希望这可以帮助仍在寻找解决此问题的方法的人们!

  • 重要的是,所有查询在达到 max_result_window 后都将停止计算结果(即使您只返回前 10 个结果),因此降低响应时间可能是减少响应时间的有效方法,特别是对于具有大量匹配项的查询。 (2认同)