Перейти до вмісту
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.
Чи завантажуються мої дані запиту кудись?
Ні. Запит будується повністю у вашому браузері з введених умов і параметрів — нічого не відправляється на сервер.