NEST API - 实施术语聚合分页

时间:2015-07-13 20:48:21

标签: elasticsearch nest

我正在尝试实现分页以从术语聚合结果中获取块中的结果。但似乎条款汇总不支持' From(..)'方法

以下是我在NEST的弹性搜索查询 -

ISearchResponse<dynamic> bResponse = ObjElasticClient.Search<dynamic>(s => s
                                             .Filter(FQuery)
                                             .Size(10)                                                                                                    
                                             .Index(elastic_indexname)
                                             .Source(false)
                                             .AllTypes()
                                             .Aggregations(a => a
                                                 .Terms(aggGroupByCDMInvoiceID, t => t
                                                          .Field("CDM_INVOICE_ID")
                                                          .Size(100)                                                                                                            
                                                          .Aggregations(innerAgg => innerAgg
                                                          .TopHits(aggLatestDocVersion, th => th
                                                          .Size(1)
                                                          .Source(false)
                                                          .Sort(x => x.OnField("VERSION").Descending())
                                                          )
                                                         )
                                                        )
                                                       )
                                                      );

我为术语聚合设置了100,现在实现了分页。但条款汇总不接受来自(...)&#39;方法

有没有替代解决方案?

谢谢, Sameer

1 个答案:

答案 0 :(得分:0)

也许你可以用不同的方式订购这些条款,然后通过过滤索引来分页?

根据文件:

更改订单:

{
    "aggs" : {
        "genders" : {
            "terms" : {
                "field" : "gender",
                "order" : { "_term" : "asc" }
            }
        }
    }
}

然后过滤:

{
    "aggs" : {
        "tags" : {
            "terms" : {
                "field" : "tags",
                "include" : ".*sport.*",
                "exclude" : "water_.*"
            }
        }
    }
}

或者你可以颠倒顺序,然后使用min_doc_count和前一个结果的doc计数进行分页:

{
    "aggs" : {
        "tags" : {
            "terms" : {
                "field" : "tags",
                "min_doc_count": 10
            }
        }
    }
}