当前位置: 首页 > news >正文

了解 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” 设置:

PUT test_index
{"mappings": {"properties": {"field_ignore_above_4": {"type": "keyword","ignore_above": 4},"field_ignore_above_256": {"type": "keyword","ignore_above": 256},"field_ignore_above_512": {"type": "keyword","ignore_above": 512}}}
}

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

PUT test_index/_doc/1
{"field_ignore_above_4": "some value","field_ignore_above_256": "some value","field_ignore_above_512": "some value"
}

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

GET test_index/_search

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

我们做如下的查询:

GET test_index/_search
{"query": {"term": {"field_ignore_above_256": {"value": "some value"}}}
}

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

GET test_index/_search
{"query": {"term": {"field_ignore_above_4": {"value": "some value"}}}
}

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

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

POST /test_index/_disk_usage?run_expensive_tasks=true&filter_path=**.fields.field*

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

{"test_index": {"fields": {"field_ignore_above_256": {"total": "30b","total_in_bytes": 30,"inverted_index": {"total": "19b","total_in_bytes": 19},"stored_fields": "0b","stored_fields_in_bytes": 0,"doc_values": "11b","doc_values_in_bytes": 11,"points": "0b","points_in_bytes": 0,"norms": "0b","norms_in_bytes": 0,"term_vectors": "0b","term_vectors_in_bytes": 0,"knn_vectors": "0b","knn_vectors_in_bytes": 0},"field_ignore_above_512": {"total": "30b","total_in_bytes": 30,"inverted_index": {"total": "19b","total_in_bytes": 19},"stored_fields": "0b","stored_fields_in_bytes": 0,"doc_values": "11b","doc_values_in_bytes": 11,"points": "0b","points_in_bytes": 0,"norms": "0b","norms_in_bytes": 0,"term_vectors": "0b","term_vectors_in_bytes": 0,"knn_vectors": "0b","knn_vectors_in_bytes": 0}}}
}

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

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

http://www.lryc.cn/news/253236.html

相关文章:

  • C#中的async/await异步编程模型
  • 【原创】提升MybatisPlus分页便捷性,制作一个属于自己的分页插件,让代码更加优雅
  • pythonselenium自动化测试实战项目
  • 智能优化算法应用:基于瞬态优化算法无线传感器网络(WSN)覆盖优化 - 附代码
  • springMVC 三大组件解析
  • 聊聊nginx的keepalive_time参数
  • 沐风老师3DMAX键盘球建模方法详解
  • 算法通关村第一关—白银挑战—链表高频面试算法题—查找两个链表的第一个公共子节点
  • C/C++ 发送与接收HTTP/S请求
  • 【算法集训】基础数据结构:一、顺序表(下)
  • [Java][项目][战斗逻辑]基于JFrame的文字游戏
  • 顺序表和链表面试题
  • 树_二叉搜索树累加求和
  • gcc编译流程概述
  • 【web安全】ssrf漏洞的原理与使用
  • 佳易王会员管理软件店铺积分以及积分兑换系统
  • Django回顾【二】
  • [Ubuntu 18.04] RK3399搭建SSH服务实现远程访问
  • Linux进程间通信之共享内存
  • lv11 嵌入式开发 RTC 17
  • c语言指针详解(上)
  • 如何删除mac苹果电脑上面的流氓软件?
  • WordPress(11)给文章添加预计阅读时长
  • 周周爱学习之快速排序
  • 国产接口测试工具APIpost
  • MySQL电商管理系统练习题及答案
  • 每日3道PWN(第二天)
  • SAP STMS传输请求
  • L1-009:N个数求和
  • 当发送“Hello,World”时,channel发生了什么?