Запрос на основе ключевых слов(Match Query)
Запрос Match используется для поиска документов, содержащих определенные ключевые слова. Он вернет документы, у которых есть хотя бы одно соответствующее ключевое слово.
Пример: Найдите продукты, название которых содержит ключевое слово laptop
в файле products Index
.
GET /products/_search
{
"query": {
"match": {
"name": "laptop"
}
}
}
Должен содержать все ключевые слова(Match Phrase Query)
Запрос Match Phrase требует, чтобы все ключевые слова в запросе отображались последовательно и в правильном порядке в тексте документа.
Пример: найти товары, описание которых содержит фразу HP laptop
.
GET /products/_search
{
"query": {
"match_phrase": {
"description": "HP laptop"
}
}
}
Должен содержать префикс целой фразы(Match Phrase Prefix Query)
Запрос Match Phrase Prefix похож на Match Phrase, но допускает частичное совпадение последнего ключевого слова.
Пример: найти товары, описание которых начинается с laptop
.
GET /products/_search
{
"query": {
"match_phrase_prefix": {
"description": "laptop"
}
}
}
Запрос на основе терминов(Term Query)
Запрос Term используется для поиска документов с полем, имеющим точное значение, как указано.
Пример: Найдите товары, category
поле которых имеет значение laptop
.
GET /products/_search
{
"query": {
"term": {
"category": "laptop"
}
}
}
Запрос на основе диапазона(Range Query)
Запрос диапазона помогает искать документы со значением поля в указанном диапазоне.
Пример: найти товары по цене от 500 до 1000.
GET /products/_search
{
"query": {
"range": {
"price": {
"gte": 500,
"lte": 1000
}
}
}
}
Запрос уровня термина
Запросы на уровне терминов позволяют искать документы на основе определенных условий, таких как точные, префиксные, диапазонные, подстановочные и нечеткие запросы.
Пример: Найдите товары, название которых начинается с, laptop
и цена от 500 до 1000.
GET /products/_search
{
"query": {
"bool": {
"must": [
{
"prefix": {
"name": "laptop"
}
},
{
"range": {
"price": {
"gte": 500,
"lte": 1000
}
}
}
]
}
}
}
Full-Text Запрос
Full-Text запросы позволяют искать текстовые поля с помощью алгоритмов анализа текста, чтобы найти похожие слова или синонимы.
Пример: найти товары, в описании которых есть либо, computer
либо laptop
.
GET /products/_search
{
"query": {
"match": {
"description": "computer laptop"
}
}
}
Логический запрос
Boolean
запросы позволяют комбинировать несколько подзапросов с различными условиями поиска, такими как «должен содержать все», «должен содержать хотя бы один» или «не должен содержать», чтобы получить точные результаты поиска.
Пример: найти товары с category
содержанием laptop
и ценой от 500 до 1000.
GET /products/_search
{
"query": {
"bool": {
"must": [
{
"term": {
"category": "laptop"
}
},
{
"range": {
"price": {
"gte": 500,
"lte": 1000
}
}
}
]
}
}
}
Это основные поисковые запросы в Elasticsearch, а также иллюстрированные примеры для каждого типа запроса. При использовании Elasticsearch вы можете комбинировать эти запросы для гибкого и эффективного поиска данных.