簡體   English   中英

使用帶有滾動的NEST 2.x的ElasticSearch查詢不會返回結果

[英]ElasticSearch query using NEST 2.x with scroll is not returning result

我正在嘗試根據出現的消息從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滾動來返回。

如果未指定 .SearchType(SearchType.Scan) ,則第一個響應將包含第一組文檔。

這是Elasticsearch的差異,不是NEST。 SearchType.Scan實際上在2.1.0中已棄用 ,但仍在NEST 2.x中,因為它支持Elasticsearch 2.x的所有次要版本。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM