了解 ignore_above 参数对 Elasticsearch 中磁盘使用的影响

在 Elasticsearch 中,ignore_above 参数允许你忽略(而不是索引)长于指定长度的字符串。 这对于限制字段的大小以避免性能问题很有用。 在本文中,我们将探讨 "ignore_above" 参数如何影响 Elasticsearch 中字段的大小,并将比较两个不同的 ignore_above 参数之间的磁盘使用情况。

首先,我们创建一个名为 "test_index" 的索引,其中包含三个字段:"field_ignore_above_4"、"field_ignore_above_256" 和 "field_ignore_above_512"。 每个字段的类型都是 "keyword",并且具有不同的 "ignore_above" 设置:

json 复制代码
1.  PUT test_index
2.  {
3.    "mappings": {
4.      "properties": {
5.         "field_ignore_above_4": {
6.          "type": "keyword",
7.          "ignore_above": 4
8.        },
9.        "field_ignore_above_256": {
10.          "type": "keyword",
11.          "ignore_above": 256
12.        },
13.        "field_ignore_above_512": {
14.          "type": "keyword",
15.          "ignore_above": 512
16.        }
17.      }
18.    }
19.  }

接下来,我们将文档插入到 test_index 中:

bash 复制代码
1.  PUT test_index/_doc/1
2.  {
3.    "field_ignore_above_4": "some value",
4.    "field_ignore_above_256": "some value",
5.    "field_ignore_above_512": "some value"
6.  }

当我们对 "test_index" 执行搜索时,我们可以看到 "field_ignore_above_4" 被忽略,因为它的值超出了 "ignore_above" 限制:

bash 复制代码
GET test_index/_search

响应显示 "field_ignore_above_4" 被忽略。这是因为 "some value" 的字符串长度超过 4。

我们做如下的查询:

bash 复制代码
1.  GET test_index/_search
2.  {
3.    "query": {
4.      "term": {
5.        "field_ignore_above_256": {
6.          "value": "some value"
7.        }
8.      }
9.    }
10.  }

上面显示是有一个文档的。我们如下针对字段 field_ignore_above_4 来做查询:

bash 复制代码
1.  GET test_index/_search
2.  {
3.    "query": {
4.      "term": {
5.        "field_ignore_above_4": {
6.          "value": "some value"
7.        }
8.      }
9.    }
10.  }

上面是不显示任何的文档的。这说明这个 field_ignore_above_4 字段确实是被忽略了。

现在,我们可以使用 "_disk_usage" API 计算字段的大小:

ini 复制代码
POST /test_index/_disk_usage?run_expensive_tasks=true&filter_path=**.fields.field*

响应提供有关每个字段大小的详细信息:

json 复制代码
1.  {
2.    "test_index": {
3.      "fields": {
4.        "field_ignore_above_256": {
5.          "total": "30b",
6.          "total_in_bytes": 30,
7.          "inverted_index": {
8.            "total": "19b",
9.            "total_in_bytes": 19
10.          },
11.          "stored_fields": "0b",
12.          "stored_fields_in_bytes": 0,
13.          "doc_values": "11b",
14.          "doc_values_in_bytes": 11,
15.          "points": "0b",
16.          "points_in_bytes": 0,
17.          "norms": "0b",
18.          "norms_in_bytes": 0,
19.          "term_vectors": "0b",
20.          "term_vectors_in_bytes": 0,
21.          "knn_vectors": "0b",
22.          "knn_vectors_in_bytes": 0
23.        },
24.        "field_ignore_above_512": {
25.          "total": "30b",
26.          "total_in_bytes": 30,
27.          "inverted_index": {
28.            "total": "19b",
29.            "total_in_bytes": 19
30.          },
31.          "stored_fields": "0b",
32.          "stored_fields_in_bytes": 0,
33.          "doc_values": "11b",
34.          "doc_values_in_bytes": 11,
35.          "points": "0b",
36.          "points_in_bytes": 0,
37.          "norms": "0b",
38.          "norms_in_bytes": 0,
39.          "term_vectors": "0b",
40.          "term_vectors_in_bytes": 0,
41.          "knn_vectors": "0b",
42.          "knn_vectors_in_bytes": 0
43.        }
44.      }
45.    }
46.  }

从响应中,我们可以看到 field_ignore_above_256 和 field_ignore_above_512 的总大小相同,均为 30 字节。

有趣的是,"field_ignore_above_4" 不包含在磁盘使用统计信息中,因为它在索引过程中由于 "ignore_above" 设置而被忽略。 这演示了如何使用 "ignore_above" 参数来控制字段的大小并优化 Elasticsearch 存储的使用。

相关推荐
Elasticsearch5 天前
Elastic Observability 的跨项目搜索:通过一个查询搜索所有关联项目
elasticsearch
Elasticsearch5 天前
Elasticsearch 中的 agentic 工作流:暂停 AI agent 等待人工审批,72 小时后恢复
elasticsearch
Elastic 中国社区官方博客5 天前
jina-ocr-v1:在低成本 GPU 上实现更快速的文档解析
大数据·数据库·elasticsearch·搜索引擎·全文检索·jina
vx-程序开发6 天前
【计算机毕设】django校园跑腿服务系统83141
java·数据库·vue.js·spring boot·spring·elasticsearch·django
Elasticsearch6 天前
jina-ocr-v1:在低成本 GPU 上实现更快速的文档解析
elasticsearch
深海鱼肝油ya6 天前
向量数据库Elasticsearch(四)搜索文档——各种方式
人工智能·elasticsearch·向量数据库·es搜索文档·只能体·非结构化数据库
Elasticsearch6 天前
SNAP 支付错误检测:Elastic 如何帮助美国各州应对 FY2028 的处罚
elasticsearch
Elastic 中国社区官方博客6 天前
使用 Elasticsearch 和 Jina 进行 AI 视频搜索:精准找到你需要的视频片段秒数
大数据·数据库·人工智能·elasticsearch·搜索引擎·ai·全文检索
Elasticsearch6 天前
2026 年唯一获得满分 Endpoint Prevention and Response(EPR)评分的是 Elastic
elasticsearch
Elasticsearch7 天前
没有小到无法记录的日志文件:Elastic Agent 如何跟踪低于 1 KiB 阈值的文件
elasticsearch