ElasticSearch NEST 搜索

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

当我尝试在 ElasticSearch 实例上执行搜索时遇到意外错误。我逐字遵循此处的文档 (http://nest.azurewebsites.net/nest/quick-start.html),但收到错误“错误 1 无法将 lambda 表达式转换为类型 'Nest.SearchDescriptor” ' 因为它不是委托类型。” “s => s” 的第一个 s 被突出显示。也许这只是一个 C# 语法问题。有什么想法吗?

var searchResults = client.Search<Person>(s=>s
      .From(0)
      .Size(10)
      .Query(q=>q
     .Term(p=>p.Firstname, "martijn")
    )
 );
c# elasticsearch nest
2个回答
0
投票

我也有同样的问题。您的问题可能与字符大小写有关。如果您将 FirstName 字段添加到 Person 对象,那么您需要在 lambda 表达式中将其写为 FirstName 而不是 Firstname。


0
投票

我通过使用术语 fn 和值解决了这个问题。

var searchResults = client.Search<Person>(s=>s
  .From(0)
  .Size(10)
  .Query(q=>q.Bool(b=> b.Filter(bf => bf.Term(t => t.Field(f=> f.Firstname).Value("martijn")));

另一种解决方案

var searchResults = client.Search<Person>(s => s
.From(0)
.Size(10)
.Query(q => q
    .Match(m => m
        .Field(p => p.Firstname)
        .Query("martijn")
    )
)

);

您可以查看此链接以获取更多信息。 https://www.elastic.co/guide/en/elasticsearch/client/net-api/7.17/bool-queries.html

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