2015-01-05 3 views
0

Я хочу вернуть результаты запроса NEST в виде консольного вывода.Как представить результаты запроса NEST?

Мой запрос:

private static void PerformTermQuery(string query) 
{ 
    var result = 
     client.Search<Post>(s => s 
     .Query(p => p.Term(q => q.PostText, query))); 
} 

Что я получаю объект, с 2-мя документами. Как «распаковать» его, чтобы показать документы как json (полный или частичный) на консоли?

ответ

1

Предполагая, что вы используете версию 1.3.1 из НЕСТ, вы можете:

  • получить необработанный ответ JSON с помощью result.RequestInformation.ResponseRaw.Utf8String()
  • парсинга JSON, чтобы получить _source
  • включать/исключать _source свойства, используя SearchSourceDescriptor на SearchDescriptor
+0

result.RequestInformation.ResponseRaw.Utf8String() не доступен. Зачем? –

+0

[Этот метод является внутренним] (https://github.com/elasticsearch/elasticsearch-net/blob/develop/src/Nest/Extensions/Extensions.cs). Я был в контекстном модуле NEST, когда я проверял это. Моя вина. 'Encoding.UTF8.GetString (...)' будет работать для вас. – Rob

0

Для NE ST/Elasticsearch 5.x, result.RequestInformation больше не доступен. Вместо этого, вы можете получить доступ запроса и ответа необработанные данные по первому отключение прямого потокового видео по запросу:

var results = elasticClient.Search<MyObject>(s => s 
    .Index("myindex") 
    .Query(q => q 
     ... 
    ) 
    .RequestConfiguration(rc => rc 
     .DisableDirectStreaming() 
    ) 
); 

После отключения прямого потокового видео, вы можете получить доступ к results.ApiCall.ResponseBodyInBytes (если смотреть на это имущество без отключения прямого потокового, это будет нулевым)

string rawResponse = Encoding.UTF8.GetString(results.ApiCall.ResponseBodyInBytes); 

Это, вероятно, имеет влияние на производительность, так что я бы не использовать его на производстве. Вы также можете отключить прямое потоковое соединение на уровне соединения/клиента, если вам нужно использовать его во всех ваших запросах. Take a look at the documentation for more information.

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