使用滚动

时间:2019-06-27 13:44:44

标签: c# elasticsearch elastic-stack elk

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

0 个答案:

没有答案