fieldData是干啥的? 当我们对text类型的字段进行首次聚类、排序、或者执行脚本的时候 。将磁盘中的数据构建到内存够中 。
默认情况下,大多数字段都已编入索引,这使它们可搜索 。但是,脚本中的排序,聚合和访问字段值需要与搜索不同的访问模式 。
搜索需要回答“哪个文档包含该术语?”这个问题,而排序和汇总则需要回答一个不同的问题:“此字段对该文档的值是什么?” 。
大多数字段可以将索引时生产的磁盘doc_values(doc_values | Elasticsearch Guide [8.1] | Elastic)用于此数据访问模式,但是文本(text)字段不支持doc_values 。
替代的方案,文本(text)字段使用查询时内存中的数据结构,称为fielddata 。当我们首次将该字段用于聚合,排序或在脚本中使用时,将按需构建此数据结构 。它是通过从磁盘读取每个段的整个反向索引,反转术语??文档关系并将结果存储在JVM堆中的内存中来构建的 。
这是一个昂贵的操作 。Fielddata针对text字段在默认时是禁用的 ! 例如我们对一个 text类型的字段进行agg聚类操作 。发现报错 。这验证了text类型字段,默认是关闭Fielddata的 。
es的堆内存是本身就是昂贵的 。Fielddata是没有限制的,并且它的结果会被缓存在堆中,并且不会被GC掉 。
可以参看我这篇对堆内存详细分析的文章:elasticsearch内存占用详细分析_水的精神的博客-CSDN博客
【elasticsearch中 fieldData】
- 春季老年人吃什么养肝?土豆、米饭换着吃
- 三八妇女节节日祝福分享 三八妇女节节日语录
- 老人谨慎!选好你的“第三只脚”
- 校方进行了深刻的反思 青岛一大学生坠亡校方整改校规
- 脸皮厚的人长寿!有这特征的老人最长寿
- 长寿秘诀:记住这10大妙招 100%增寿
- 春季老年人心血管病高发 3条保命要诀
- 眼睛花不花要看四十八 老年人怎样延缓老花眼
- 香槟然能防治老年痴呆症? 一天三杯它人到90不痴呆
- 老人手抖的原因 为什么老人手会抖
