ElasticSearch NEST 简单术语查询需要 .keyword

ElasticSearch NEST simple Terms query requires .keyword

我正在尝试使用 NEST 7.5.1 (.NET Core 3.1) 检索具有特定名称(正是该名​​称)的单个文档:

var queryByTerm = client.Search<SomeDto>(s =>s.Query(q => q.Term(p => p.NameField, "example name")));

但是没有return任何文件(调用成功)。

正在发送的实际查询(如在客户端 ConnectionSettings 上的 DebugInformation.EnableDebugMode 中所见):

{"query":{"term":{"nameField":{"value":"example name"}}}}

但它仅在我为 nameField:

添加 .keyword 时才起作用(在 Kibana 中)
{"query":{"term":{"nameField.keyword":{"value":"example name"}}}}

我是否必须以某种方式强制 NEST 使用 nameField.keyword 而不是 nameField

您可以使用 .Suffix() 扩展方法来完成此操作。 Docs.

var queryByTerm = client.Search<SomeDto>(s =>s.Query(q => q.Term(p => p.NameField.Suffix("keyword"), "example name")));

希望对您有所帮助。