Основные поисковые запросы в Elasticsearch: полное руководство

Запрос на основе ключевых слов(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 вы можете комбинировать эти запросы для гибкого и эффективного поиска данных.