目前,我们已在多重搜索查询中修复了3个搜索查询。代码如下:
var results = elasticClient.MultiSearch(a => a
.Search<StockBaseEntity>(s => s
.Type("<docType>")
.Index(<indexName>)
.Take(<count>)
.Query(qq => qq
...
.Search<StockBaseEntity>(s => s
.Type("<docType>")
.Index(<indexName>)
.Take(<count>)
.Query(qq => qq
....
.Search<StockBaseEntity>(s => s
.Type("<docType>")
.Index(<indexName>)
.Take(<count>)
.Query(qq => qq
....
所有三个搜索查询都有一些不同的查询参数,例如,第一个查询返回“type1”doc,second&amp;第三次分别返回“type2和type3”文档。
我们希望以这样的方式构建这个多搜索嵌套查询:我们可以在多个searach查询中使用任意数量的搜索嵌套查询(而不仅仅是3个)。它可能是3/4/5或基于某些条件的任意数量的搜索查询。如果我们可以将搜索查询附加到multisearch,这可以实现吗?我们可以这样做吗?
我读过this文章,但是对于嵌套版本5.X无法获得相同的内容,我不知道如何使用QueryContainer编写查询?
答案 0 :(得分:1)
一种选择是使用MultiSearchRequest
并将其与搜索描述符结合使用。
var multiSearchRequest = new MultiSearchRequest{};
multiSearchRequest.Operations = new Dictionary<string, ISearchRequest>();
multiSearchRequest.Operations["search1"] = new SearchDescriptor<object>().Query(q => q.MatchAll());
multiSearchRequest.Operations["search2"] = new SearchDescriptor<object>().Query(q => q.MatchAll());
multiSearchRequest.Operations["search3"] = new SearchDescriptor<object>().Query(q => q.MatchAll());
elasticClient.MultiSearch(multiSearchRequest);
希望有所帮助。