大小参数以及它与扫描和滚动的关系如何获取所有结果?

时间:2016-03-15 00:12:01

标签: java search elasticsearch scroll lucene

我希望能够使用扫描和滚动API获取查询的所有结果。

根据ES文档(https://www.elastic.co/guide/en/elasticsearch/client/java-api/current/java-search-scrolling.html),size参数设置应该获取每个分片的命中数。

是否每批结果与下一批的相应滚动ID一起表示每个分片的命中数(< = size)?

如果大小<

这是否意味着扫描和滚动会忽略分片中的其余结果sizeOfResultsInShard,并移动到下一个分片?或者这是否意味着它仍然会滚动来自同一分片的下一批结果,而不是转移到另一个分片?

如果我们只获取每个分片的“大小”数量的结果,那么我是唯一一种从每个分片中获取所有结果的方法,我将BIG NUMBER设置为大小参数?不确定这个大号应该有多大!希望有一种更简单的方法来获取所有结果,而不是使用大于每个分片可能的结果数量的随机猜测。

1 个答案:

答案 0 :(得分:0)

scroll:允许我们继续从Elasticsearch中提取批量结果,直到不再有结果为止。它有点像传统数据库中的游标。

size:size参数设置应该获取每个分片的命中数。

简而言之,Scroll搜索用于获取与查询匹配的所有文档。 Size指定应该获取每个分片的命中数,但如果涉及多个分片,则单个滚动获取的总记录数可能远大于大小。

  

是每批结果都有相应的滚动ID   下一批,表示每个碎片的命中数(< = size)?

是。这些代表了每个分片的下一批命中。

  

这是否意味着扫描和滚动会忽略其余结果   如果大小< sizeOfResultsInShard,然后移到下一个   碎片 -

不,它没有。在下一个滚动中,它将获取下一个size个记录。如果size> remainingResults,则只会从此分片中获取remainingResults。

  

或者这是否意味着它仍将滚动下一批   结果来自同一个分片,而不是移动到另一个分片?

是的,直到结果用完为止。