Elastic.Clients.Elasticsearch中MatchAll()方法调用报错求助
正确使用Elastic.Clients.Elasticsearch的MatchAll查询
针对你遇到的问题,以下是两种可行的正确写法:
写法一:使用空配置委托
var searchResponse = await _elasticClient.SearchAsync<Dictionary<string, object>>(s => s .Index("user-field-mappings") .Query(q => q.MatchAll(_ => _)) );
这里的_ => _是简化的lambda表达式,代表接受MatchAllQueryDescriptor参数并直接返回它,满足方法对委托参数的要求,同时不修改任何查询配置。
写法二:直接实例化MatchAllQuery
如果觉得委托写法繁琐,也可以直接构造MatchAllQuery实例:
var searchResponse = await _elasticClient.SearchAsync<Dictionary<string, object>>(s => s .Index("user-field-mappings") .Query(q => new MatchAllQuery()) );
错误原因说明
- 第一个代码报错是因为Elastic.Clients.Elasticsearch的
MatchAll方法没有无参重载,必须传入一个用于配置查询的委托(即使不需要调整任何参数)。 - 第二个代码报错是因为lambda表达式
m => m在当前上下文被解析为语句体而非表达式体,改用_ => _这种表达式体写法即可解决。
获取查询结果
执行查询后,可通过searchResponse.Documents获取所有反序列化为Dictionary<string, object>的文档集合。
内容的提问来源于stack exchange,提问作者Sergio Delgado
相关产品推荐
相关产品推荐

