【发布时间】:2016-06-13 01:44:27
【问题描述】:
我的文件夹中的文档很少,我想检查该文件夹中的所有文档是否都已编入索引。为此,对于文件夹中的每个文档名称,我想对 ES 中索引的文档运行一个循环并进行比较。所以我想检索所有的文档。
同一个问题很少有其他可能的重复项,例如retrieve all records in a (ElasticSearch) NEST query 和enter link description here,但它们对我没有帮助,因为从那时起文档已经发生了变化。(当前文档中没有关于扫描的内容)
我尝试使用 client.search<T>() 。但根据文档,检索到的默认数量为 10 个结果。我想获取所有记录而不提及记录的大小? (因为索引的大小发生了变化)
或者是否可以先获取索引的大小,然后将此数字作为输入发送到大小以获取所有文档并循环遍历?
【问题讨论】:
-
嗨,拉斯。我尝试使用它并且能够获得scrollId。一旦我得到一个scrollId,我不知道如何再次运行搜索查询(我相信这会产生更多的scrollId),直到我检索到所有文档列表。我没有在 NEST 中找到任何相同的示例。 (我正在检查 2.x 版本的文档。无论如何都会尝试使用您发布的链接中给出的示例)谢谢。
-
第一条评论中的链接有一个例子——它执行一个搜索,指定搜索类型为
scroll,然后使用滚动ID来获取第一页的结果。然后它使用从最后一个响应返回的滚动 ID 循环获取所有文档。您还可以结合使用fields来为每个结果只返回文档的一个字段,而不是返回整个文档 -
试过了,它的工作原理......非常感谢拉斯。但是
SearchType(Nest.SearchType.Scan)似乎不起作用。我不得不使用SearchType(Elasticsearch.Net.SearchType.Scan)。使用卷轴后我必须删除卷轴还是在上述时间后将它们清除?
标签: c# elasticsearch nest