使用带有滚动的NEST 2.x的ElasticSearch查询不会返回结果

我正在尝试根据出现的消息从elasticsearch检索所有数据,我发现如果使用Scroll,我可以循环直到文档搜索结束,但是以下查询返回Documents

= 0但Total = 1954:

var response = client.Search<Log4Net>(s => s

.Query(q => q.QueryString(qs => qs

.DefaultField(m => m.Message).Query("\"" + message + "\"")))

.SearchType(SearchType.Scan)

.Scroll("60s"));

while (response.Documents.Any())

{

var request = new BulkRequest();

request.Refresh = true;

request.Consistency = Consistency.One;

request.Operations = new List<IBulkOperation>();

foreach (var item in response.Documents)

{

request.Operations.Add(new BulkIndexOperation<Log4Net>(item));

}

var result = client.Bulk(request);

response = client.Scroll<Log4Net>("60s", response.ScrollId);

}

如果我使用滚动条,则文档为空,如果我删除并获得前1000条消息,则可以获取数据,我使用滚动条的方式有什么问题吗?

回答:

如果指定.SearchType(SearchType.Scan),则第一个响应不包含任何文档。它将为您提供.Total属性中的全部文档,这些属性将通过.ScrollId在滚动请求中使用on响应滚动来返回。

如果 .SearchType(SearchType.Scan),则第一个响应将包含第一组文档。

这是Elasticsearch的差异,不是NEST。SearchType.Scan实际上在2.1.0中已弃用,但仍在NEST 2.x中,因为它支持Elasticsearch 2.x的所有次要版本。

以上是 使用带有滚动的NEST 2.x的ElasticSearch查询不会返回结果 的全部内容, 来源链接: utcz.com/qa/401244.html

回到顶部