Spec-Zone.ru › Elasticsearch 7
›Elasticsearch Guide [7.17] ›REST API ›Search API

API Explain

Возвращает информацию о том, почему конкретный документ соответствует (или не соответствует) запросу.

GET /my-index-000001/_explain/0
{
  "query" : {
    "match" : { "message" : "elasticsearch" }
  }
}

Запрос

GET /<index>/_explain/<id>

POST /<index>/_explain/<id>

Предварительные условия

  • Если включены функции безопасности Elasticsearch, у вас должна быть read право доступа к индексу для целевого индекса.

Описание

API explain вычисляет объяснение оценки для запроса и конкретного документа. Это может предоставить полезную обратную связь о том, соответствует ли документ конкретному запросу или нет.

Параметры пути

<id>
(Обязательно, целое число) Определяет идентификатор документа.
<index>

(Обязательно, строка) Имена индексов, используемые для ограничения запроса.

В этом параметре можно указать только одно имя индекса.

Параметры запроса

analyzer

(Необязательно, строка) Анализатор, который следует использовать для строки запроса.

Этот параметр можно использовать только при указании параметра строки запроса q.

analyze_wildcard

(Необязательно, Булево) Если true, знаки вопроса и префиксные запросы анализируются. По умолчанию значение false.

Этот параметр можно использовать только при указании параметра строки запроса q.

default_operator

(Необязательно, строка) Операторы по умолчанию для запроса строки: ИЛИ или И. По умолчанию OR.

Этот параметр можно использовать только при указании параметра строки запроса q.

df

(Необязательно, строка) Поле, которое следует использовать по умолчанию, когда в строке запроса нет префикса поля.

Этот параметр можно использовать только при указании параметра строки запроса q.

lenient

(Необязательно, Булево) Если true, ошибки запроса на основе формата (например, предоставление текста числовому полю) в строке запроса будут игнорироваться. По умолчанию false.

Этот параметр можно использовать только при указании параметра строки запроса q.

preference
(Необязательно, строка) Указывает узел или фрагмент, на котором должна выполняться операция. По умолчанию случайный.
q
(Необязательно, строка) Запрос в синтаксисе строки запроса Lucene.
stored_fields
(Необязательно, строка) Список хранимых полей, которые необходимо вернуть в ответе, разделенных запятыми.
routing
(Необязательно, строка) Пользовательское значение, используемое для маршрутизации операций на определенный фрагмент.
_source
(Необязательно, строка) True или false, чтобы вернуть поле _source или нет, или список полей для возврата.
_source_excludes

(Необязательно, строка) Список полей источника, которые нужно исключить из ответа, разделенных запятыми.

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

Если параметр _source равен false, этот параметр игнорируется.

_source_includes

(Необязательно, строка) Список полей источника, которые нужно включить в ответ, разделенных запятыми.

Если этот параметр указан, возвращаются только эти поля источника. Вы можете исключить поля из этого подмножества, используя параметр запроса _source_excludes.

Если параметр _source равен false, этот параметр игнорируется.

Тело запроса

query
(Необязательно, объект запроса) Определяет определение поиска, используя Query DSL.

Примеры

GET /my-index-000001/_explain/0
{
  "query" : {
    "match" : { "message" : "elasticsearch" }
  }
}

API возвращает следующий ответ:

{
   "_index":"my-index-000001",
   "_type":"_doc",
   "_id":"0",
   "matched":true,
   "explanation":{
      "value":1.6943598,
      "description":"weight(message:elasticsearch in 0) [PerFieldSimilarity], result of:",
      "details":[
         {
            "value":1.6943598,
            "description":"score(freq=1.0), computed as boost * idf * tf from:",
            "details":[
               {
                  "value":2.2,
                  "description":"boost",
                  "details":[]
               },
               {
                  "value":1.3862944,
                  "description":"idf, computed as log(1 + (N - n + 0.5) / (n + 0.5)) from:",
                  "details":[
                     {
                        "value":1,
                        "description":"n, number of documents containing term",
                        "details":[]
                     },
                     {
                        "value":5,
                        "description":"N, total number of documents with field",
                        "details":[]
                     }
                  ]
               },
               {
                  "value":0.5555556,
                  "description":"tf, computed as freq / (freq + k1 * (1 - b + b * dl / avgdl)) from:",
                  "details":[
                     {
                        "value":1.0,
                        "description":"freq, occurrences of term within document",
                        "details":[]
                     },
                     {
                        "value":1.2,
                        "description":"k1, term saturation parameter",
                        "details":[]
                     },
                     {
                        "value":0.75,
                        "description":"b, length normalization parameter",
                        "details":[]
                     },
                     {
                        "value":3.0,
                        "description":"dl, length of field",
                        "details":[]
                     },
                     {
                        "value":5.4,
                        "description":"avgdl, average length of field",
                        "details":[]
                     }
                  ]
               }
            ]
         }
      ]
   }
}

Также есть более простой способ указания запроса с помощью параметра q. Указанное значение параметра q затем анализируется так, как если бы использовался запрос query_string. Пример использования параметра q в API explain:

GET /my-index-000001/_explain/0?q=message:search

API возвращает тот же результат, что и предыдущий запрос.

© 2023-2025 Elasticsearch
As of September 2024, Elasticsearch is available under a choice of three licenses: the Server Side Public License (SSPL), the Elastic License, or the AGPLv3 (OSI approved).
Elasticsearch and the Elasticsearch logo are trademarks of Elasticsearch B.V., registered in the U.S. and in other countries.
https://www.elastic.co/guide/en/elasticsearch/reference/7.17/search-explain.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API