2

之前提出了类似的问题,并根据类似的答案提供了下面的原始代码。我的要求是在弹性搜索中“循环”/滚动所有当前索引的文档以获取其唯一 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());
4

0 回答 0