Перейти к содержанию
100% локально

Конструктор запросов Elasticsearch

Преобразуйте список условий поле/оператор/значение в полный bool-запрос Elasticsearch с фильтрами и агрегациями.

Выходные данные

Конструктор запросов Elasticsearch

Вставьте список условий, и этот инструмент создаст полный запрос поиска Elasticsearch: bool-запрос с ветвями must, should, must_not и filter, плюс сортировка, пагинация и опциональная агрегация. Подходит для всех, кто вручную пишет запросы в Kibana Dev Tools, REST-клиенте или слое поиска приложения и предпочел бы описать условия вместо повторного ввода JSON-каркаса каждый раз.

Каждое условие — это одна строка в поле Conditions: опциональная ветвь (must, should, must_not, filter), имя поля, опциональный тип условия (term для точного совпадения, match для полнотекстового поиска, range для сравнений, exists для проверки наличия поля) и значение — разделённые точками с запятой. «filter price range 100..500» создаёт range-клаузулу; «should title match wireless headphones» создаёт полнотекстовый поиск по фразе; «must email exists» проверяет наличие поля. Пропустите тип, и Default condition type подставит его; пропустите ветвь, и Default branch подставит её, поэтому быстрый список «status active; category electronics» всё равно даст валидный запрос.

Панель опций охватывает остальное в реальном запросе поиска: Sort field и order добавляют sort-клаузулу, Page size и Offset управляют from/size пагинацией, а Aggregation включает terms или date_histogram агрегацию по выбранному полю. Highlight matches добавляет блок highlight для любых match-условий, а Query language version переключает track_total_hits, доступный только с Elasticsearch 7 и выше.

Всё работает в вашем браузере — условия, которые вы вводите, и запрос, который получается, никогда не загружаются никуда. Скопируйте результат прямо в Kibana Dev Tools или body запроса, загрузите как .txt-файл или отправьте результат обратно в input для дальнейшей доработки.

FAQ

Как написать условие?
Одна строка на условие, разделённые точками с запятой: опциональная ветвь, имя поля, опциональный тип условия, затем значение — например «must status term active; filter price range 100..500».
Что означают term, match, range и exists?
term точно совпадает с полем, match ищет полный текст, range сравнивает поле с границами (пишите «min..max», «min..», «..max» или «>=5»), а exists просто проверяет наличие поля — значение не требуется.
Что произойдёт, если я опущу ветвь или тип?
Параметры Default branch и Default condition type подставляют опущенные части, поэтому простая строка «field value» всё равно создаст валидное условие.
Работает ли запрос со всеми версиями Elasticsearch?
Bool-запрос, сортировка, пагинация, агрегации и подсвечивание стабильны с Elasticsearch 6. Параметр Query language version изменяет только одно: track_total_hits, который появился в Elasticsearch 7 и опускается для запроса 6.x.
Загружаются ли мои данные запроса куда-то?
Нет. Запрос строится полностью в вашем браузере из введённых условий и параметров — ничего не отправляется на сервер.