了解 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 存储的使用。

相关推荐
hengzhepa8 小时前
ElasticSearch备考 -- Async search
大数据·学习·elasticsearch·搜索引擎·es
bubble小拾16 小时前
ElasticSearch高级功能详解与读写性能调优
大数据·elasticsearch·搜索引擎
不能放弃治疗17 小时前
重生之我们在ES顶端相遇第 18 章 - Script 使用(进阶)
elasticsearch
hengzhepa17 小时前
ElasticSearch备考 -- Search across cluster
学习·elasticsearch·搜索引擎·全文检索·es
Elastic 中国社区官方博客19 小时前
Elasticsearch:使用 LLM 实现传统搜索自动化
大数据·人工智能·elasticsearch·搜索引擎·ai·自动化·全文检索
慕雪华年20 小时前
【WSL】wsl中ubuntu无法通过useradd添加用户
linux·ubuntu·elasticsearch
Elastic 中国社区官方博客1 天前
使用 Vertex AI Gemini 模型和 Elasticsearch Playground 快速创建 RAG 应用程序
大数据·人工智能·elasticsearch·搜索引擎·全文检索
alfiy1 天前
Elasticsearch学习笔记(四) Elasticsearch集群安全配置一
笔记·学习·elasticsearch
alfiy1 天前
Elasticsearch学习笔记(五)Elastic stack安全配置二
笔记·学习·elasticsearch
丶21362 天前
【大数据】Elasticsearch 实战应用总结
大数据·elasticsearch·搜索引擎