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

Tec*_*ead 5 c# elasticsearch nest

有没有办法通过 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(.....
Run Code Online (Sandbox Code Playgroud)

计数的更改将是 SearchDescriptor -> CountDescriptor 和 ISearchRequest -> ICountRequest。似乎查询需要编写两次,因为如果不预先了解所使用的类型,流畅的标记将无法编译。

基本问题是,是否有任何简洁的可维护方法来使用 Nest 查询来执行搜索和计数请求?

Rob*_*Rob 7

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

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));
Run Code Online (Sandbox Code Playgroud)

希望有帮助。