gpt4 book ai didi

mapping - 具有 doc_values 的 not_analyzed 字段仍在 fielddata 缓存中

转载 作者:行者123 更新时间:2023-12-02 22:24:41 24 4
gpt4 key购买 nike

在对 fielddata vs doc_values 进行的一些实验中,我遇到了一个奇怪的案例。在我之前的映射中,我根本没有使用文档值。在我的新映射中,我已将 doc_values: true 添加到映射中的所有字段,分析的字符串字段和 bool 值 ( not supported until 2.0 ) 除外。

详细来说,我是这样处理的:

在重新索引我的所有数据之前,我重新启动了我的 ES 1.7 集群并运行了一个带有排序、聚合和脚本字段的查询以“预热”字段数据缓存。然后我查询了 /fielddata 端点以了解 fielddata 缓存的使用情况。它看起来像这样:

curl -XGET 'localhost:9200/_cat/fielddata?v&fields=*'

id host ip node total items.desc.raw more_fields...
rKX7... myhost 192.168.1.100 Doom 32.9mb 2.3mb ...

如您所见,items.desc.raw 字段使用了 2.3mb 的堆空间。 itemsnested 类型,包含一个字符串多字段和一个名为 rawnot_analyzed 子字段。简而言之,该嵌套字段的映射如下所示:

    "items": {
"type": "nested",
"properties": {
"desc": {
"type": "string",
"fields": {
"raw": {
"type": "string",
"index": "not_analyzed"
}
}
}
}
}

doc_values: true 添加到 items.desc.raw 后,重新索引整个索引并再次运行一些聚合、排序和脚本以预热 fielddata 缓存,我再次查询 /fielddata 端点,结果如下:

curl -XGET 'localhost:9200/_cat/fielddata?v&fields=*'

id host ip node total items.desc.raw some_bools...
tAB5... myhost 192.168.1.100 Yack 2.1mb 9.2kb ...

所以 fielddata 的使用确实大大降低了(这很好),我看到的唯一字段是 bool 字段(即上面的 some_bools),这是预期的,但令我惊讶的是,我的嵌套 not_analyzed 字符串字段也出现了,但占用的空间要少得多。

items.desc.raw 仍然出现在 fielddata 缓存中的原因是什么?

最佳答案

不知何故我忘记了global ordinals .这就是为什么即使在使用 doc_values 之后我仍然使用 fielddata 的原因,因为全局序数不能包含在 doc_values 中。

参见 more details here

关于mapping - 具有 doc_values 的 not_analyzed 字段仍在 fielddata 缓存中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31623636/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com