Различные результаты при использовании GET/POST в упругом поиске - программирование

Различные результаты при использовании GET/POST в упругом поиске

Я экспериментирую с эластичным поиском через плагин Elastic Search Head.

Результаты ожидаются, когда я отправляю запрос через POST.

Однако, когда я пытаюсь использовать тот же запрос с помощью GET, я всегда возвращаю все значения в индекс.

Итак: как передать запрос на эластичный поисковый сервер через GET, чтобы я мог использовать строку поиска в URL?

4b9b3361

Ответ 1

Если вы отправляете GET, тело, вероятно, даже не отправляется в elasticsearch, поэтому вы в основном не отправляете запрос в конечную точку _search, поэтому вы все возвращаете (конечно, только первые 10 результатов, основанных на параметр размера по умолчанию).

Посмотрите URI-запрос, который позволяет отправлять базовые запросы с использованием параметра q в URI. Вы можете использовать синтаксис запроса Lucene и указать некоторые другие параметры, перечисленные на связанной странице. Если вы хотите выполнить более сложные запросы, вы можете выразить их как запросы JSON, чтобы получить все преимущества elasticsearch Query DSL, но вам нужно предоставить их как тело запроса.

UPDATE
Глядя глубже в плагин заголовка elasticsearch, запрос не отправляется в качестве тела запроса при выборе метода GET, но внутри самого URL-адреса и без указания имени для параметра, например:

http://localhost:9200/_search&{"query":{"term":{"text":"john"}}}

Вероятно, это ошибка в самом плагине, и elasticsearch не может найти запрос, поэтому вы возвращаете все результаты. Это означает, что при отправке запросов с помощью команды elasticsearch работает только метод POST.

Elasticsearch позволяет использовать как GET, так и POST для выполнения запросов. Если вы используете GET, вы можете отправить запрос как тело или использовать параметр источника следующим образом:

http://localhost:9200/_search?source={"query":{"term":{"text":"john"}}}