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")));
希望对您有所帮助。
我正在尝试使用 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")));
希望对您有所帮助。