elasticsearch,elastic-stack,elk,C#,elasticsearch,Elastic Stack,Elk" /> elasticsearch,elastic-stack,elk,C#,elasticsearch,Elastic Stack,Elk" />

C# 使用scroll获取弹性搜索中索引的所有文档的ID

C# 使用scroll获取弹性搜索中索引的所有文档的ID,c#,elasticsearch,elastic-stack,elk,C#,elasticsearch,Elastic Stack,Elk,以前也有人问过类似的问题,a根据类似的答案提供了下面的原始代码。我的要求是在弹性搜索中“循环/滚动”所有当前索引的文档,以获得其唯一ID的列表。下面的代码在前1000个文档中运行良好,但是在没有检索到新ID的情况下被困在do-while循环中。它可能不会进一步滚动?请有人指出错误/问题,好吗?谢谢 var searchResult = client.Search<Document>( s => s .AllTypes() .From(0) .Si

以前也有人问过类似的问题,a根据类似的答案提供了下面的原始代码。我的要求是在弹性搜索中“循环/滚动”所有当前索引的文档,以获得其唯一ID的列表。下面的代码在前1000个文档中运行良好,但是在没有检索到新ID的情况下被困在do-while循环中。它可能不会进一步滚动?请有人指出错误/问题,好吗?谢谢

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());
var searchResult=client.Search(
s=>s
.AllTypes()
.从(0)
.尺寸(1000)
.MatchAll()
.滚动(“10秒”)
);
IBulkResponse indexResult=null;
做
{
var结果=搜索结果;
searchResult=client.Scroll(“10s”,result.ScrollId);
if(searchResult.Documents.Any())
{
foreach(searchResult.Documents中的var文档)
{
var id=doc.some_id.Trim();
if(id_list.Contains(id)==false)
{
id_列表。添加(id);
Console.WriteLine(id\u list.Count);
}
}
}
page++;
}while(searchResult.IsValid&&indexResult!=null&&indexResult.IsValid&&searchResult.Documents.Any());

有人吗?我需要开始赏金吗?