Запрос ElasticSearch с использованием NEST 2.x с прокруткой не возвращает результат

Я пытаюсь получить все данные из 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 сообщений, я могу получить данные, что-то не так с тем, как я использую прокрутку?


person Lucas Gazire    schedule 20.07.2016    source источник


Ответы (1)


Если вы укажете .SearchType(SearchType.Scan), первый ответ не будет содержать никаких документов; Это даст вам общее количество документов в свойстве .Total, которые будут возвращены при прокрутке с использованием .ScrollId в ответе на запрос прокрутки.

Если вы не укажете .SearchType(SearchType.Scan), первый ответ будет содержать первый набор документов.

Это разница в Elasticsearch, а не в NEST. SearchType.Scan фактически устарел в версии 2.1. 0, но все еще находится в NEST 2.x, так как поддерживает все младшие версии Elasticsearch 2.x.

person Russ Cam    schedule 21.07.2016