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

标签 elasticsearch .net-core nest

我正在尝试使用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和客户端的.EnableDebugMode上的ConnectionSettings所示):
{"query":{"term":{"nameField":{"value":"example name"}}}}

但是它仅在我为.keyword添加nameField时才有效(在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")));

希望能有所帮助。

关于elasticsearch - ElasticSearch NEST简单术语查询需要.keyword,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59665946/

相关文章:

asp.net - 在C#中使用NEST实现 Elasticsearch 时出现Node错误

javascript - 避免在 Mocha 测试的 Elasticsearch 请求中使用 setTimeout()

azure - 使用 .NET Core(API 和 HTTP)创建 Azure AD 应用程序和服务主体

.net-core - 在 .NET 核心的 xunit 上下文中获取 ContentRootPath 或 IHostingEnvironment

c# - 无法在 .NET Core MVC 中发布数据

c# - NEST不推荐使用的字段[include]

swift - 为什么要使用嵌套类?

elasticsearch - 如何调试Fluentd为什么不将数据发送到Elasticsearch?

sorting - Elasticsearch 对字符串进行排序未返回预期结果

python - 出现Elasticsearch映射错误时如何查看显式字段名称