Elasticsearch: Поиск с помощью строк запросов: Bool query

Теперь, когда вы увидели, как искать по всем или определенным полям, давайте рассмотрим, как можно внедрить логику булевых операций в строку запроса.

Elasticsearch

Давайте выполним поиск по полю name, как мы делали в предыдущей статье, но на этот раз добавим круглые скобки. Внутри круглых скобок мы добавим термин pasta, за которым последует логический оператор. В этом примере мы используем AND, а после него добавим термин "спагетти". Этот запрос ищет продукты, которые содержат в названии оба термина - паста и спагетти.

Это дает только один результат. Если мы заменим оператор boolean на or, то получим больше результатов.

Можно также создать более сложную логику, просто добавив больше булевых операторов в круглые скобки. Попробуем рассмотреть другой пример, в котором мы включаем несколько полей. Скажем, например, что мы хотим найти активные продукты, в названии которых есть слова "макароны" или "спагетти".

Как видите, это позволяет осуществлять довольно мощный поиск.

Вы также можете использовать булевы операторы в самой строке запроса для еще большего контроля. Префикс термина со знаком + означает, что этот термин должен присутствовать, а префикс со знаком - означает, что он не должен присутствовать. Любые термины без префикса в таком запросе являются необязательными. Это похоже на то, как можно сделать в поиске Google. Давайте рассмотрим небольшой пример. Мы скажем, что термин паста должен присутствовать, а термин спагетти не должен присутствовать.

Просматривая результаты поиска, мы увидим, что продукт с названием Pasta - Spaghetti больше не возвращается.

Понравилась статья? Поделиться с друзьями:
Добавить комментарий