elasticsearch Elasticsearch映射中FielddataLoading.Eager选项的替代品是什么?,elasticsearch,nest,elasticsearch,Nest" /> elasticsearch Elasticsearch映射中FielddataLoading.Eager选项的替代品是什么?,elasticsearch,nest,elasticsearch,Nest" />

elasticsearch Elasticsearch映射中FielddataLoading.Eager选项的替代品是什么?

elasticsearch Elasticsearch映射中FielddataLoading.Eager选项的替代品是什么?,elasticsearch,nest,elasticsearch,Nest,我正在将一个应用程序从Elasticsearch 2.3升级到7.9。我使用的是NEST客户端版本7.11.1,它与ES7.9兼容。我们使用7.9,因为这是我们正在使用的AWS服务器上可用的最新版本 旧应用程序具有以下字段映射: .String(s => s .Name(f => f.PartDescription) .Analyzer(Analyzers.DescriptionAnalyzer) .Fielddata(descriptor => des

我正在将一个应用程序从Elasticsearch 2.3升级到7.9。我使用的是NEST客户端版本7.11.1,它与ES7.9兼容。我们使用7.9,因为这是我们正在使用的AWS服务器上可用的最新版本

旧应用程序具有以下字段映射:

.String(s => s
    .Name(f => f.PartDescription)
    .Analyzer(Analyzers.DescriptionAnalyzer)
    .Fielddata(descriptor => descriptor.Loading(FielddataLoading.Eager)));
我正在使用以下映射在新版本中替换此映射:

.Text(t => t
    .Name(ep => ep.PartDescription)
    .Analyzer(Analyzer.DescriptionAnalyzer)
    .Fielddata(true))
我看到在新版本中,Fielddata的唯一选项是布尔值。缺少渴望和其他选项


Fielddata(true)是否适合升级?

字段数据上的布尔值决定是否为字段启用了
Fielddata
fielddata
用于执行聚合、排序和脚本编写,并按需加载到堆中、fielddata缓存中(不急于加载)

通常用于:<代码>文本对数据类型进行分析,结果标记存储在反向索引中。当
fielddata
设置为
true
时,反转索引将根据需要取消转换,以生成一个列结构,该列结构将加载到堆中,用于对
文本
字段进行聚合、排序和脚本编写。文本分析通常会生成许多标记,这些标记很好地满足全文搜索的目的,但不能很好地满足聚合、排序和脚本编写的目的。有了许多令牌和许多并发聚合,堆内存可以快速增长,从而施加GC压力。因此,
文本
数据类型字段的默认值是将
字段数据
设置为
,如果您知道自己在做什么,则将其设置为


与其在
文本
数据类型字段中将
字段数据
设置为
,一个好的方法是确定该字段是否是用于聚合、排序和脚本编写的字段,并将
关键字
多字段作为目标。

这很简单!我从这些字段中删除了Fielddata(true)设置,所有内容仍然有效。我不知道为什么老应用程序上的开发人员使用了该设置,但它似乎是多余的,因为字段不用于排序或聚合。