如何从搜索结果中获取所有值
Posted
技术标签:
【中文标题】如何从搜索结果中获取所有值【英文标题】:How to get all the values from an search result 【发布时间】:2011-06-26 19:27:38 【问题描述】:我是弹性搜索的新手。有什么方法可以获取搜索关键字的所有搜索结果?弹性搜索限制为 10 或者我们可以设置大小但我们需要获取大小?
【问题讨论】:
我会推荐使用滚动搜索来获取所有记录(如分页)。 elasticsearch.org/guide/en/elasticsearch/reference/current/… 【参考方案1】:是的,默认搜索结果数为 10。
您需要在查询时set the size
parameter。
我不认为你会说“所有结果”,但必须始终有大小限制。
【讨论】:
@raagavan:什么总大小? @skaffman 看看我是否搜索关键字example
如果它在 200 个文档中,我需要显示 200 个结果..
有什么办法可以像 solr http://blog.jteam.nl/2009/10/20/result-grouping-field-collapsing-with-solr/
@raagavan 没有。但你可以看看孩子父母的东西:elasticsearch.org/guide/reference/query-dsl/…
@raagavan 如果你需要所有文件(你为什么要??)考虑扫描搜索:elasticsearch.org/blog/2011/03/24/new-search-types.html【参考方案2】:
如果您使用 JAVA API,您可以简单地从 SearchResponse 中获取总命中数
SearchRequestBuilder srb = ..
SearchResponse sr = srb.execute().actionGet();
long totalHits = sr.getHits().getTotalHits();
【讨论】:
【参考方案3】:您可以使用一些代码分几步完成此操作
-
修复一个大小,比如
1000
并获取所有 1000 条记录。
从hits.total
中识别大小是否小于 1000。(如果小,则您获得了所有记录 :))
否则,请使用 from and size 在 from 和 total
中提供 1001
作为先前查询的大小以获得完整结果。
【讨论】:
以上是关于如何从搜索结果中获取所有值的主要内容,如果未能解决你的问题,请参考以下文章