解释 API
编辑解释 API编辑
返回有关特定文档匹配(或不匹配)查询的原因的信息。
response = client.explain( index: 'my-index-000001', id: 0, body: { query: { match: { message: 'elasticsearch' } } } ) puts response
GET /my-index-000001/_explain/0 { "query" : { "match" : { "message" : "elasticsearch" } } }
描述编辑
解释 API 计算查询和特定文档的评分解释。这可以提供有用的反馈,说明文档是否匹配或不匹配特定查询。
路径参数编辑
-
<id>
- (必需,整数)定义文档 ID。
-
<index>
-
(必需,字符串)用于限制请求的索引名称。
此参数只能提供单个索引名称。
查询参数编辑
-
analyzer
-
(可选,字符串)用于查询字符串的分析器。
此参数只能在指定
q
查询字符串参数时使用。 -
analyze_wildcard
-
(可选,布尔值)如果为
true
,则分析通配符和前缀查询。默认为false
。此参数只能在指定
q
查询字符串参数时使用。 -
default_operator
-
(可选,字符串)查询字符串查询的默认运算符:AND 或 OR。默认为
OR
。此参数只能在指定
q
查询字符串参数时使用。 -
df
-
(可选,字符串)用作默认字段,在查询字符串中没有给出字段前缀时使用。
此参数只能在指定
q
查询字符串参数时使用。 -
lenient
-
(可选,布尔值)如果为
true
,则忽略查询字符串中基于格式的查询失败(例如,向数字字段提供文本)。默认为false
。此参数只能在指定
q
查询字符串参数时使用。 -
preference
- (可选,字符串)指定应执行操作的节点或分片。默认情况下为随机。
-
q
- (可选,字符串)Lucene 查询字符串语法中的查询。
-
stored_fields
- (可选,字符串)要返回响应中的存储字段的逗号分隔列表。
-
routing
- (可选,字符串)用于将操作路由到特定分片的自定义值。
-
_source
- (可选,字符串)是否返回
_source
字段,或返回字段列表。默认为 true。 -
_source_excludes
-
(可选,字符串)要从响应中排除的 源字段 的逗号分隔列表。
您还可以使用此参数从
_source_includes
查询参数中指定的子集中排除字段。如果
_source
参数为false
,则忽略此参数。 -
_source_includes
-
(可选,字符串)要包含在响应中的 源字段 的逗号分隔列表。
如果指定此参数,则只返回这些源字段。您可以使用
_source_excludes
查询参数从此子集中排除字段。如果
_source
参数为false
,则忽略此参数。
示例编辑
response = client.explain( index: 'my-index-000001', id: 0, body: { query: { match: { message: 'elasticsearch' } } } ) puts response
GET /my-index-000001/_explain/0 { "query" : { "match" : { "message" : "elasticsearch" } } }
API 返回以下响应
{ "_index":"my-index-000001", "_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
查询一样。解释 API 中 q
参数的使用示例
response = client.explain( index: 'my-index-000001', id: 0, q: 'message:search' ) puts response
GET /my-index-000001/_explain/0?q=message:search
API 返回与上一个请求相同的结果。