我在NEST中有一个大查询,它由2个查询容器构成。现在我想将一个查询容器的返回文档的大小限制为10,而对另一个查询容器没有限制。对于我的结果,我需要.Take(take)和.Skip(skip)进行分页。这是一个例子:
var result = EsClient.Search<Business>(q => q
.Query(qq =>
{
QueryContainer nearByQuery= null;
QueryContainer locationQuery = null;
locationQuery = qq.Term("postCode", toLowSearchLocation);
nearByQuery = qq
.Filtered(ft => ft
.Filter(fl => fl
.Bool(n => n
.MustNot(x => x.Term(na => na.PostCode, searchLocation.ToLower()))
)
);
return locationQuery || nearByQuery;
现在我真正想要的是在第二个查询上放一个.Size,所以我从那个只得到10个。有谁知道怎么做?
谢谢!
答案 0 :(得分:2)
搜索端点不可用,因为它只需要一个查询。即使您在代码中构建两个单独的查询,一旦您将它们组合在一起,它们就会成为一个。
实现这一目标的最佳方法可能是使用multi search,这将允许您在单个请求中执行多个查询,您可以在其中为每个查询指定所需的大小。
NEST示例:
var result = EsClient.MultiSearch<Business>(ms => ms
.Search<Business>(s => s.Size(50).Query(locationQuery))
.Search<Business>(s => s.Size(10).Query(nearByQuery))
);
有关更多示例,请参阅these tests。