gpt4 book ai didi

c# - Elasticsearch.net v. 2.3+ 库 (c#) 中多字段映射的替代方案?

转载 作者:行者123 更新时间:2023-11-30 21:47:14 26 4
gpt4 key购买 nike

我的问题:我有一个带有字符串属性的索引,我在该索引上执行查询和聚合。我想对正在分析的属性执行术语查询,并对未分析的属性执行术语聚合。在以前的 elasticsearch 版本中,有一个多字段映射,但是自该库的 2.0 版本以来它就消失了。我怎样才能做到这一点?

旁注:我想避免在我的索引中复制该属性并将重复项中的一个标记为已分析,另一个标记为未分析,因为这似乎不是有效的解决方案。

我使用的库 (c#): Elasticsearch.net 2.3.3 和 NEST 2.3.3。

欢迎提出任何建议。

最佳答案

multi_field 映射仍然存在于 Elasticsearch 2.x 和 NEST 2.x 中;这是一个例子

client.Map<Document>(m => m
.Index("index-name")
.AutoMap()
.Properties(p => p
.String(s => s
.Name(n => n.Location)
.Fields(f => f
.String(fs => fs
.Name("raw").NotAnalyzed()
)
)
)
)
);

这里 Location 属性被映射为一个 multi_field 并应用了默认的 Standard 分析器;这将在索引中的 location 字段中。此外,location.raw 字段已编入索引,但未进行分析。

要使用分析的 location 属性执行术语查询将是

client.Search<Document>(s => s
.Query(q => q
.Term(f => f.Location, "location")
)
);

并且在术语聚合中使用未分析的属性将是

client.Search<Document>(s => s
.Size(0)
.Aggregations(a => a
.Terms("top_locations", ta => ta
.Field(f => f.Location.Suffix("raw"))
)
)
);

关于c# - Elasticsearch.net v. 2.3+ 库 (c#) 中多字段映射的替代方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38622334/

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