[英]c# nest: how to dynamically append elasticsearch search queries to multi search nest query?
目前,我们在多搜索查询中固定了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”文档,第二个和第三个返回“ type2和type3”文档。
我们希望以这样的方式构建此多搜索嵌套查询,即在多西拉克查询中可以有任意数量的搜索嵌套查询(而不仅仅是3个)。 根据某种条件,它可能是3/4/5或任意数量的搜索查询。 如果我们可以将搜索查询附加到多重搜索,就可以实现吗? 我们可以做到吗?
我阅读了这篇文章,但不能为嵌套版本5.X获得相同的信息,而且我不知道如何使用QueryContainer编写查询?
一种选择是使用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);
希望能有所帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.