2016-06-22 4 views
0

Я пытаюсь выяснить, как извлечь, возможно, большое количество документов, используя NEST 2.3.2. Поскольку существует ограничение на количество документов в ответе (задано администратором сервера), я хочу, чтобы Scroll был безопасным.Извлечение неизвестного количества документов в Elasticsearch с использованием NEST

Я читал this, но я не нашел способа добиться этого, используя библиотеку NEST 2.3.2. Это documentation для 1.x, и это не работает для 2.x.

В частности, когда я пытаюсь установить SearchType = Elasticsearch.Net.SearchType.Scan в SearchRequest, он автоматически посылает запрос на /_search?search_type=scan и сервер просто возвращает «search_phase_execution_exception», потому что «Свиток должен быть обеспечен при сканировании ...». Но я не знаю, как получить идентификатор прокрутки.

Кто-нибудь знает, как этого достичь? Я хочу просмотреть просмотренные документы с возможными несколькими запросами, пока они не будут восстановлены. Если кто-то может предоставить некоторый пример кода, который будет очень полезен. Большое спасибо.

ответ

2

Я пробовал что-то вроде этого для своей проблемы, в которой мне нужно проиндексировать все документы, а затем выполнить некоторую обработку. Я использовал свиток. Вы можете посмотреть на мой вопрос от here

var scanResults = client.Search<IndexName>(s => s 
       .From(0) 
       .Size(20) //any size you can give 
       .MatchAll() 
       .Source(so => so 
       .Include(fi => fi.Field(fieldName)) 
       .SearchType(Elasticsearch.Net.SearchType.Scan) 
       .Scroll("5m") //time for which the scrollId is saved. Can be anything. 
      ); 

      var results = client.Scroll<IndexName>("10m", scanResults.ScrollId); 

      while (results.Documents.Any()) 
      { 
       //do whatever you want to do from the resultant documents 

       results = client.Scroll<IndexName>("10m", results.ScrollId); 
      } 

Больше информации о scroll

Надежда это помогает.

+1

Благодарим вас за ответ. Ну, я понял это, посмотрев версию открытого текста и угадав параметры в NEST API. Ключ должен установить свойство 'Scroll' в объекте' SearchRequest' и передать его методу 'Поиск'. Если 'Scroll' установлен на непустое значение, он генерирует id. Мне все еще нужно выяснить детали, но я думаю, что это должно сработать. – LLS

+0

Может быть, вы можете попробовать и проверить, помогает ли это вам. – ASN

Смежные вопросы