English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

API поиска Elasticsearch

Этот API используется для поиска контента в Elasticsearch. Пользователь может выполнить поиск, отправив GET-запрос с строкой запроса в качестве параметра, или можно发布 запрос в теле сообщения. Основная функция поиска API - это много индексов и много типов.

Много индексов

Elasticsearch позволяет нам искать все индексы или некоторые специфические индексы, содержащие документы. Например, если нам нужно найти все документы, содержащие имя с "central", можно выполнить следующую операцию:

GET /_all/_search?q=city:paprola

При выполнении вышеуказанного кода мы получили следующий ответ-

{
   "took": 33,
   "timed_out": false,
   "_shards": {
      "total": 7,
      "successful": 7,
      "skipped": 0,
      "failed": 0
   },
   "hits": {
      "total": {
         "value": 1,
         "relation": "eq"
      },
      "max_score": 0.9808292,
      "hits": [
         {
            "_index": "schools",
            "_type": "school",
            "_id": "5",
            "_score": 0.9808292,
            "_source": {
               "name": "Central School",
               "description": "CBSE Affiliation",
               "street": "Nagan",
               "city": "paprola",
               "state": "HP",
               "zip": "176115",
               "location": [
                  31.8955385,
                  76.8380405
               ]
               "fees": 2200,
               "tags": [
                  "Senior Secondary",
                  "beautiful campus"
               ]
               "rating": "3.3"
            }
         }
      ]
   }
}

URI поиска

Многие параметры могут быть переданы в операцию поиска с помощью Uniform Resource Identifier-

НомерПараметры и описание
1

Q

Этот параметр используется дляspecification строкового запроса

2

lenient

Этот параметр используется дляspecification строкового запроса. Если этот параметр установлен в true, можно игнорировать ошибки на основе Formatbased. По умолчанию это false.

3

fields

Этот параметр используется дляspecification строкового запроса

4

sort

Мы можем получить результат сортировки с помощью этого параметра, возможные значения - fieldName, fieldName:asc/ fieldName:desc

5

timeout

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

6

terminate_after

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

7

from

Начальный индекс вхождений, по умолчанию равен 0.

8

size

Это означает количество возвращаемых вхождений, по умолчанию равно 10.

Текст запроса поиска

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

POST /schools/_search
{
   "query": {
      "query_string": {
         "query": "up"
      }
   }
}

При выполнении вышеуказанного кода мы получили следующий ответ-

{
   "took": 11,
   "timed_out": false,
   "_shards": {
      "total": 1,
      "successful": 1,
      "skipped": 0,
      "failed": 0
   },
   "hits": {
      "total": {
         "value": 1,
         "relation": "eq"
      },
      "max_score": 0.47000363,
      "hits": [
         {
            "_index": "schools",
            "_type": "school",
            "_id": "4",
            "_score": 0.47000363,
            "_source": {
               "name": "City Best School"
               "description": "ICSE",
               "street": "West End",
               "city": "Meerut",
               "state": "UP",
               "zip": "250002",
               "location": [
                  28.9926174,
                  77.692485
               ]
               "fees": 3500,
               "tags": [
                  "fully computerized"
               ]
               "rating": "4.5"
            }
         }
      ]
   }
}