在 Nest ElasticSearch 中重复使用计数和搜索查询

Reuse query for both count and search in Nest ElasticSearch

有没有办法通过 Nest 在 ElasticSearch 中为 Client.Search 和 Client.Count 重用流畅的查询?

这是定义搜索流畅定义的片段的开头。

 System.Func<SearchDescriptor<Documents.City>, ISearchRequest> x = s => 
 s.Index(IndexNames.Cities).From(0)
   .Size(100)
   .Query(q => q.Bool(.....

计数更改为 SearchDescriptor -> CountDescriptor 和 ISearchRequest -> ICountRequest。看起来查询需要写两次,因为如果没有预先了解正在使用的类型,流畅的标记将无法编译。

关键问题是,是否有使用 Nest 查询执行 Search 和 Count 请求的简洁可维护方法?

与其重复使用搜索部分,不如尝试使用查询来完成:

Func<QueryContainerDescriptor<T>, QueryContainer> query =
    q => q.MatchAll();

var searchResponse = await ElasticClient().SearchAsync<T>(s => s
    .Query(query));

var countResponse = await ElasticClient().CountAsync<T>(s => s.Query(query));

希望对您有所帮助。