在 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));
希望对您有所帮助。
有没有办法通过 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));
希望对您有所帮助。