Синтаксис поисковых запросов

Поисковый движок Elasticsearch доступен в версии 7.11 и выше.

Движок Elasticsearch использует встроенный язык запросов, позволяющий выполнять гибкий поиск как по простым, так и по достаточно сложным критериям.

Полное описания языка запросов содержится на странице официальной документации. Ниже представлены наиболее популярные примеры.

Примеры

Поиск любых записей, содержащих Кеннет и Макмиллан:

Кеннет AND Макмиллан

Поиск любых записей, содержащих имя Алекс (но не Алексей):

name.first:Алекс

Поиск любых записей, содержащих имена, начинающиеся с Алекс:

named:Алекс*

Поиск любых контрагентов, содержащих НПО в названии:

named:НПО AND _type:Accounts

Объединение

По умолчанию поиск проводится по всем указанным ключевым словам, например, поиск Кеннет Макмиллан будет соответствовать Кеннет ИЛИ Макмиллан. Записи, содержащие ВСЕ указанные ключевые слова, будут выведены в верхних строках результата поиска.

Исключение из поиска

Если необходимо, чтобы в результатах поиска отсутствовали записи с определёнными ключевыми словами - поставьте перед ними знак минуса.

Поиск записей, содержащих проспект, но НЕ содержащих улица:

проспект -улица

Повышение релевантности

При необходимости релевантность ключевого слова или фразы можно повысить, например, если при поиске фразы электрификация южных губерний необходимо в результатах поиска в первую очередь вывести упоминания южных губерний, то запрос можно составить следующим образом:

*электрификация (южных губерний)^2*

Символы подстановки

По умолчанию в результатах поиска появляются все ключевые слова, имеющие ТОЧНОЕ совпадение. Таким образом, поиск по слову Алекс не выведет в результатах поиска Алексей. Если точного совпадения не требуется - используйте символы подстановки:

* - ноль или более символов

? - замена ровно одного символа

Поиск значений Алекс и Алексей:

named:Алекс*

Поиск всех записей с фамилиями, начинающихся с Проскуд или Горск:

name.last:(Проскуд* OR Горск*)

Символы подстановки могут быть использованы и в начале ключевых слов, но поиск в этом случае будет выполняться гораздо медленнее.

Поиск всех записей с фамилиями, оканчивающихся на Горский:

name.last:*горский

Поиск в модулях

При необходимости поиск может быть ограничен рамками одного или нескольких модулей при помощи ключевого слова _type.

Поиск в модуле Контакты (Contacts):

_type:Contacts

Нечёткий поиск

Использование тильды (~) сделает поиск нечётким, что означает, что будут найдены все совпадения, различающиеся по символам на указанном расстоянии. Расстояние можно настроить, добавив номер после тильды.

Поиск записей, содержащих MacMillan, McMillan или MakMillan:

MacMillan~3

Поиск в метаданных

Каждая запись содержит следующие поля, по которым может быть осуществлён поиск:

  • meta.created.date

  • meta.created.user_id

  • meta.created.user_name

  • meta.modified.date

  • meta.modified.user_id

  • meta.modified.user_name

  • meta.assigned.user_id

  • meta.assigned.user_name

Поиск всех записей, созданных Артуром Маккензи:

meta.created.user_name:(Артур Маккензи)

Поиск всех записей, изменённых 29 ноября 2018 года:

meta.modified.date:"2018-11-29"

Content is available under GNU Free Documentation License 1.3 or later unless otherwise noted.