之前提出了类似的问题,并根据类似的答案提供了下面的原始代码。我的要求是在弹性搜索中“循环”/滚动所有当前索引的文档以获取其唯一 ID 的列表。下面的代码适用于前 1000 个文档,但随后卡在 do while 循环中而没有检索到新的 id。它可能不会进一步滚动?有人可以这么好心并指出错误/问题吗?谢谢!
var searchResult = client.Search<Document>(
s => s
.AllTypes()
.From(0)
.Size(1000)
.MatchAll()
.Scroll("10s")
);
IBulkResponse indexResult = null;
do
{
var result = searchResult;
searchResult = client.Scroll<Document>("10s", result.ScrollId);
if (searchResult.Documents.Any())
{
foreach (var doc in searchResult.Documents)
{
var id = doc.some_id.Trim();
if (id_list.Contains(id) == false)
{
id_list.Add(id);
Console.WriteLine(id_list.Count);
}
}
}
page++;
} while (searchResult.IsValid && indexResult != null && indexResult.IsValid && searchResult.Documents.Any());