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

问题描述 投票:0回答:1

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

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

但是它不返回任何文档(调用成功。)>

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

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

但是仅当我在.keyword中添加nameField时,它才有效(在Kibana中:)>

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

我是否必须强制NEST使用nameField.keyword而不是nameField

[我正在尝试使用NEST 7.5.1(.NET Core 3.1)检索一个具有特定名称(确切是该名称)的文档:var queryByTerm = client.Search ((s => s.Query(q => q.Term(p => ...

elasticsearch .net-core nest
1个回答
0
投票

您可以使用.Suffix()扩展方法执行此操作。 Docs

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

希望有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.