当我尝试在 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")
)
);
我也有同样的问题。您的问题可能与字符大小写有关。如果您将 FirstName 字段添加到 Person 对象,那么您需要在 lambda 表达式中将其写为 FirstName 而不是 Firstname。
我通过使用术语 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