gpt4 book ai didi

c# - 如何使用 NEST 在 elasticsearch 中添加未分析的文本关键字进行排序?

转载 作者:行者123 更新时间:2023-11-30 23:06:40 26 4
gpt4 key购买 nike

我正在使用 C# 中的 NEST 客户端与我的 elasticsearch 集群进行交互。

我正在尝试根据字符串值进行排序。但根据 this ,我不能这样做,因为该字段是文本字段。

所以我想添加一个关键字字段并根据它进行排序以获得更好的性能。像这样:

{
"mappings": {
"my_type": {
"properties": {
"my_field": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword"
}
}
}
}
}
}
}

但我不确定如何最好地将其转换为 NEST 客户端,然后如何根据 my_field.keyword 进行排序。

我将其作为我的映射,但由于我不确定排序子句是什么样的,所以我不确定如何测试它。

.Mappings(m => m
.Map<Product>(mm => mm
.Properties(p => p
.Text(t => t
.Name(n => n.ProductName)
.Analyzer("custom")
.Fields(f => f
.Keyword(k => k)
)
)
)
)
)

我一直在尝试深入研究 NEST 文档,但很难找到这种更边缘的功能。

最佳答案

要引用多字段的字段,您可以在成员访问 lambda 表达式中使用 .Suffix("suffixname") 扩展方法

client.Search<Comic>(s => s
.Query(q=> q
.Match(m => m
.Field(f => f.Description.Suffix("keyword"))
.Query("Wolverine")
)
)
);

查询结果

{
"query": {
"match": {
"description.keyword": {
"query": "Wolverine"
}
}
}
}

如果你愿意,你也可以指定字符串

client.Search<Comic>(s => s
.Query(q=> q
.Match(m => m
.Field("description.keyword"))
.Query("Wolverine")
)
)
);

关于c# - 如何使用 NEST 在 elasticsearch 中添加未分析的文本关键字进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48009590/

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