繁体   English   中英

C#Nest:如何将ElasticSearch搜索查询动态追加到多搜索Nest查询?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM