解释 API
编辑解释 API
编辑返回关于特定文档为何匹配(或不匹配)查询的信息。
resp = client.explain( index="my-index-000001", id="0", query={ "match": { "message": "elasticsearch" } }, ) print(resp)
response = client.explain( index: 'my-index-000001', id: 0, body: { query: { match: { message: 'elasticsearch' } } } ) puts response
const response = await client.explain({ index: "my-index-000001", id: 0, query: { match: { message: "elasticsearch", }, }, }); console.log(response);
GET /my-index-000001/_explain/0 { "query" : { "match" : { "message" : "elasticsearch" } } }
描述
编辑解释 API 计算查询和特定文档的分数解释。这可以提供有用的反馈,说明文档是否匹配或不匹配特定查询。
路径参数
编辑-
<ID>
- (必需,整数)定义文档 ID。
-
<索引>
-
(必需,字符串)用于限制请求的索引名称。
此参数只能提供一个索引名称。
查询参数
编辑-
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 或 false,或要返回的字段列表。 -
_source_excludes
-
(可选,字符串)要从响应中排除的 源字段 的逗号分隔列表。
您还可以使用此参数从
_source_includes
查询参数中指定的子集中排除字段。如果
_source
参数为false
,则忽略此参数。 -
_source_includes
-
(可选,字符串)要包含在响应中的 源字段 的逗号分隔列表。
如果指定了此参数,则仅返回这些源字段。您可以使用
_source_excludes
查询参数从此子集中排除字段。如果
_source
参数为false
,则忽略此参数。
示例
编辑resp = client.explain( index="my-index-000001", id="0", query={ "match": { "message": "elasticsearch" } }, ) print(resp)
response = client.explain( index: 'my-index-000001', id: 0, body: { query: { match: { message: 'elasticsearch' } } } ) puts response
const response = await client.explain({ index: "my-index-000001", id: 0, query: { match: { message: "elasticsearch", }, }, }); console.log(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
参数的示例
resp = client.explain( index="my-index-000001", id="0", q="message:search", ) print(resp)
response = client.explain( index: 'my-index-000001', id: 0, q: 'message:search' ) puts response
const response = await client.explain({ index: "my-index-000001", id: 0, q: "message:search", }); console.log(response);
GET /my-index-000001/_explain/0?q=message:search
API 返回与上一个请求相同的结果。