2015-06-22 3 views
0

Есть ли способ сказать NEST использовать GET вместо POST при выполнении поиска? Подобно тому, как документация ElasticSearch показывает CURL с использованием GET, я бы хотел использовать GET при использовании NEST вместо использования POST, как это в настоящее время.NEST - Использование GET вместо POST/PUT для поиска

ответ

0

Да

https://github.com/elastic/elasticsearch-net/blob/develop/src/Nest/DSL/SearchDescriptor.cs линия номер 135

public static void Update(IConnectionSettingsValues settings, ElasticsearchPathInfo<SearchRequestParameters> pathInfo, ISearchRequest request) 
    { 
     pathInfo.HttpMethod = request.RequestParameters.ContainsKey("source") ? PathInfoHttpMethod.GET : PathInfoHttpMethod.POST; 
    } 

Очевидно, что вам нужно иметь SearchRequest.RequestParameters.ContainsKey("source") возвращение true для того, чтобы сделать Get.

В будущем. Просто RTFM.

+0

Я вошел и клонировал их концентратор, чтобы попытаться понять, как использовать это, но я не мог понять, как это использовать. Как добавить ключ «источник»? Откуда возникает этот «источник» по запросу? Я попытался добавить '.Fields (new [] {" * "," source "})' к моему 'client.Search ()', но он по-прежнему отправляется как POST через GET. Можете ли вы предоставить мне пример о том, как это сделать? Моя проблема не в том, что код не существует, но что я не смог найти допустимый способ запускать это или любое другое место, где GET может быть заменен POST. – Neverwhere

+0

В соответствии с этим https://github.com/elastic/elasticsearch-net/blob/develop/src/Nest/DSL/Common/BaseRequest.cs вам необходимо установить его в QueryString. – Aron

+0

Спасибо за это, Арон. Тем не менее, я все еще немного смущен тем, как заставить его фактически установить это значение. Я вручную скомпилировал/использовал NEST, где я изменил указанную выше строку, чтобы заставить ее использовать GET в обоих случаях, и она по-прежнему не выполняет то, что я ищу, поскольку тело запроса, отправленное GET, пуст. Мне интересно, может ли NEST сделать это, так как он не отправляет тело запроса, если он выполняет поиск в SearchGet. – Neverwhere

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