当我在 elasticsearch (NEST) 中添加 Sort() 时,我没有得到任何点击

Tad*_*dej 5 c# elasticsearch nest

当我这样排序时:

.Sort(sortDescriptor => sortDescriptor.Descending(product => product.TopProduct))
Run Code Online (Sandbox Code Playgroud)

我没有命中。知道为什么吗?是语法错误还是什么?我从官方 NEST/elasticsearch 文档网站得到这个。

解决方案

我必须.Suffix("keyword")这样添加:

.Sort(sortDescriptor => sortDescriptor.Descending(product => product.TopProduct.Suffix("keyword")))
Run Code Online (Sandbox Code Playgroud)

它奏效了。我必须使用“TopProduct”上的“关键字”子字段。

字符串属性的默认映射编辑: 使用自动映射时,字符串 POCO 类型的推断映射是具有多个字段(包括关键字子字段)的文本数据类型

来源: https: //www.elastic.co/guide/en/elasticsearch/client/net-api/current/multi-fields.html#_default_mapping_for_string_properties

如果您索引没有映射的字符串,5.0+ 中的 ES 现在会自动创建该字段的文本版本和关键字版本(在 .keyword 下)。- dakroneLee HinmanElastic 团队成员

来源:https ://discuss.elastic.co/t/is-sorting-on-text-string-field-no-longer-available-in-5-x/68586/4

这有效,但有人可以向我解释文本和关键字数据类型如何工作吗?