字段使用统计 API

编辑

此功能处于技术预览阶段,可能会在未来的版本中更改或删除。Elastic 会努力修复任何问题,但技术预览版中的功能不受正式 GA 功能的支持 SLA 约束。

返回索引的每个分片和字段的字段使用信息。当查询在集群上运行时,会自动捕获字段使用统计信息。访问给定字段的分片级搜索请求,即使在该请求期间多次访问,也只会被计为一次使用。

resp = client.indices.field_usage_stats(
    index="my-index-000001",
)
print(resp)
response = client.indices.field_usage_stats(
  index: 'my-index-000001'
)
puts response
const response = await client.indices.fieldUsageStats({
  index: "my-index-000001",
});
console.log(response);
GET /my-index-000001/_field_usage_stats

请求

编辑

GET /<索引>/_field_usage_stats

先决条件

编辑
  • 如果启用了 Elasticsearch 安全功能,您必须拥有目标索引或索引别名的 manage 索引权限

路径参数

编辑
<索引>
(可选,字符串) 用于限制请求的索引名称的逗号分隔列表或通配符表达式。

查询参数

编辑
allow_no_indices
(可选,布尔值) 如果为 false,则当任何通配符表达式、索引别名_all 值仅指向缺失或关闭的索引时,请求将返回错误。即使请求的目标是其他打开的索引,也会应用此行为。例如,如果一个索引以 foo 开头,但没有索引以 bar 开头,则以 foo*,bar* 为目标的请求将返回错误。
expand_wildcards

(可选,字符串) 通配符模式可以匹配的索引类型。如果请求可以针对数据流,则此参数确定通配符表达式是否匹配隐藏的数据流。支持逗号分隔的值,例如 open,hidden。有效值为

all
匹配任何数据流或索引,包括隐藏的数据流或索引。
open
匹配打开的非隐藏索引。还匹配任何非隐藏的数据流。
closed
匹配关闭的非隐藏索引。还匹配任何非隐藏的数据流。数据流不能关闭。
hidden
匹配隐藏的数据流和隐藏的索引。必须与 openclosed 或两者结合使用。
none
不接受通配符模式。
ignore_unavailable
(可选,布尔值) 如果为 false,则当请求目标为缺失或关闭的索引时,请求将返回错误。默认为 false
wait_for_active_shards

(可选,字符串) 在继续操作之前,每个分片必须处于活动状态的副本数。设置为 all 或任何非负整数,直到索引中每个分片的副本总数 (number_of_replicas+1)。默认为 1,表示仅等待每个主分片处于活动状态。

请参阅活动分片

fields

(可选,字符串) 要包含在统计信息中的字段的逗号分隔列表或通配符表达式。

响应正文

编辑

响应正文报告索引中支持字段的数据结构的每个分片的使用计数。给定的请求会将每个计数增加最大值 1,即使该请求多次访问同一字段。

any
(整数) 表示字段的任何类型的用途 (例如,通过倒排索引存储字段文档值等),使得给定搜索请求的任何使用都计为一次。
inverted_index

(对象) 倒排索引index 映射参数启用,并通过设置字段的index_options 进行配置。

inverted_index 的属性
terms
(整数) 表示 倒排索引词项 的使用情况,回答“是否使用了此字段的倒排索引?”这个问题。
postings
(整数) 表示包含给定词项的文档 ID 的 倒排列表 的使用情况。
proximity
(整数) 表示 倒排索引位置偏移量有效负载 的任何类型的使用情况,使得给定搜索请求的任何使用都计为一次。
positions
(整数) 表示 倒排索引位置 数据(词项的顺序)的使用情况。
term_frequencies
(整数) 表示 倒排索引中用于计算分数的 词项频率 的使用情况。
offsets
(整数) 表示 倒排索引中存储词项的起始和结束字符偏移量的 偏移量 的使用情况。
payloads
(整数) 表示 倒排索引有效负载 的使用情况,例如,通过分隔有效负载标记过滤器,或者通过用户定义的分析组件和插件。
stored_fields
(整数) 表示 存储字段 的使用情况。这些字段通过 store 映射选项启用,并通过指定 stored_fields 查询选项进行访问。请注意,默认情况下会存储 _source_id 字段,并且它们的使用情况会在此处计算。
doc_values
(整数) 表示 文档值 的使用情况,主要用于排序和聚合。这些值通过doc_values 映射参数启用。
points
(整数) 表示 Lucene PointValues 的使用情况,这是大多数数字字段数据类型的基础,包括空间数据类型数字日期等等。查询/聚合使用它们进行范围、计数、分桶、最小值/最大值、直方图、空间等等。
norms
(整数) 表示 norms 的使用情况,其中包含用于评分的索引时提升值。
term_vectors
(整数) 表示 词项向量 的使用情况,允许在搜索时检索文档的词项。使用场景包括高亮显示More Like This 查询
knn_vectors
(整数) 表示 knn_vectors 字段类型的使用情况,主要用于k 最近邻 (kNN) 搜索

示例

编辑

以下请求检索当前可用分片上索引 my-index-000001 的字段使用信息。

resp = client.indices.field_usage_stats(
    index="my-index-000001",
)
print(resp)
response = client.indices.field_usage_stats(
  index: 'my-index-000001'
)
puts response
const response = await client.indices.fieldUsageStats({
  index: "my-index-000001",
});
console.log(response);
GET /my-index-000001/_field_usage_stats

API 返回以下响应

{
    "_shards": {
        "total": 1,
        "successful": 1,
        "failed": 0
    },
    "my-index-000001": {
        "shards": [
            {
                "tracking_id": "MpOl0QlTQ4SYYhEe6KgJoQ",
                "tracking_started_at_millis": 1625558985010,
                "routing": {
                    "state": "STARTED",
                    "primary": true,
                    "node": "gA6KeeVzQkGURFCUyV-e8Q",
                    "relocating_node": null
                },
                "stats" : {
                    "all_fields": { 
                        "any": "6",
                        "inverted_index": {
                            "terms" : 1,
                            "postings" : 1,
                            "proximity" : 1,
                            "positions" : 0,
                            "term_frequencies" : 1,
                            "offsets" : 0,
                            "payloads" : 0
                        },
                        "stored_fields" : 2,
                        "doc_values" : 1,
                        "points" : 0,
                        "norms" : 1,
                        "term_vectors" : 0,
                        "knn_vectors" : 0
                    },
                    "fields": {
                        "_id": { 
                            "any" : 1,
                            "inverted_index": {
                                "terms" : 1,
                                "postings" : 1,
                                "proximity" : 1,
                                "positions" : 0,
                                "term_frequencies" : 1,
                                "offsets" : 0,
                                "payloads" : 0
                            },
                            "stored_fields" : 1,
                            "doc_values" : 0,
                            "points" : 0,
                            "norms" : 0,
                            "term_vectors" : 0,
                            "knn_vectors" : 0
                        },
                        "_source": {...},
                        "context": {...},
                        "message.keyword": {...}
                    }
                }
            }
        ]
    }
}

报告索引中所有字段的(在列出的分片上)使用计数总和。

报告以下使用计数(在列出的分片上)的字段名称。