Elasticsearch: Поиск с помощью строк запросов - основы

В этом посте мы рассмотрим поиск с помощью использования строк запроса в URI.

Elasticsearch

API строк запросов является мощным и содержит множество функций, поэтому я просто покажу вам основные и наиболее важные способы его использования. Если вам нужно полное описание API строк запросов, обратитесь к документации.

Для начала давайте напишем простой запрос. Я буду использовать индекс "ecommerce" и искать документы с типом продукта. Для выполнения поиска я буду использовать API _search, а поскольку я хочу искать по строке запроса, я добавлю параметр q. Значение этого параметра будет нашей строкой поиска. Для первого примера я просто хочу показать вам, как можно найти все документы типа продукта в индексе, что можно сделать, используя звездочку в качестве подстановочного знака. Это может быть полезно, если вы хотите иметь индекс всех документов, например.

Будет найдено 999 документов, что является общим числом документов в индексе.

Я уделю немного времени обсуждению важных частей результата. Внутри ключа hits есть два мета-свойства о результатах. Свойство total содержит количество совпавших результатов, а свойство max_score - наивысший балл из всех совпавших документов. Вложенное свойство hits содержит массив найденных документов. Для каждого документа можно увидеть мета-поля, которые мы обсуждали в предыдущем посте. Еще одно важное свойство - _score, которое представляет собой оценку, показывающую, насколько хорошо документ соответствует поисковому запросу. Это число основано на сложных математических расчетах, и сейчас вам не нужно знать об этом больше. Свойство _source содержит найденный документ в виде JSON, который мы добавили в индекс при добавлении документа.

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

По умолчанию поиск в строке запроса ищет по всем полям, если в запросе не указано одно или несколько полей. В данном примере мы ищем термин pasta в любом поле документа типа product в индексе ecommerce.

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

Это означает, что мы ищем все продукты, в названии которых есть слово pasta. С нашими тестовыми данными это дает тот же результат, но если я изменю название поля на description, то вы увидите, что мы не получим ни одного совпадения.

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

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