限制查询容器NEST elasticsearch返回的文档的大小

时间:2015-01-14 12:13:51

标签: c# elasticsearch size nest

我在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个。有谁知道怎么做?

谢谢!

1 个答案:

答案 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