Если вы хотите выполнить простой запрос Elasticsearch (ES), вы можете сделать запрос GET, используя метод URI.В cURL простым примером будет:
curl -X GET "https://www.example.com/vulcanIndex/_search?q=name:Spock"
Несмотря на то, что cURL не существует в .NET, его довольно легко перевести, поэтому он будет работатьс HttpWebRequest.
К сожалению, на момент написания этого поста документация ES гласила: «Не все параметры поиска открываются при выполнении поиска в этом режиме ...» -https://www.elastic.co/guide/en/elasticsearch/reference/current/search-uri-request.html
По-видимому, для выполнения более «продвинутых» поисков, таких как Query String Queries, вы должны фактически передать тело с поисковым запросом, который в настоящее время показан на этой странице примера:https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-query-string-query.html
Так что, очевидно, если бы я хотел найти всех вулканцев, которые были , а не человеком, который окончил MIT или Академию Звездного Флота, я мог бы выполнить команду cURL, например:
curl -X GET "https://www.example.com/vulcanIndex/_search" -H 'Content-Type: application/json' -d'
{
"query": {
"query_string": {
"query": "(institution:"Starfleet Academy" OR institution: MIT) AND (NOT alternateSpecies:Human)"
}
}
}
'
К сожалению, у меня нет легкого доступа к cURL из ASP.NET.В большинстве сообщений, которые я видел в Интернете об эмуляции поведения cURL, предлагается использовать для этой цели HttpWebRequest;к сожалению, в отличие от cURL, HttpWebRequest не позволяет GET-запросам передавать данные тела: C # HTTP Body с методом GET Это создает для меня проблему.
Как выполнить «расширенный» поиск ES, такой как Query String Query из ASP.NET (без NEST), если объект HttpWebRequest не позволяет мне отправлять данные тела через запросы GET?