【问题标题】:NEST API - Implement Pagination for Terms aggregationNEST API - 为术语聚合实现分页
【发布时间】:2015-07-13 20:48:21
【问题描述】:

我正在尝试实现分页以从术语聚合结果中获取块中的结果。但似乎术语聚合不支持 '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,现在实现了分页。但是条款聚合不接受 'From(..)' 方法。

还有其他解决方案吗?

谢谢, 萨米尔

【问题讨论】:

标签: elasticsearch nest


【解决方案1】:

也许您可以对术语进行不同的排序,然后通过索引过滤来分页?

根据文档:

更改顺序:

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

然后过滤:

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

或者,您可以颠倒顺序,然后使用 min_doc_count 和上一个结果中的文档计数进行分页:

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

【讨论】:

    猜你喜欢
    • 2020-07-20
    • 1970-01-01
    • 1970-01-01
    • 2016-06-22
    • 2022-01-15
    • 2014-07-09
    • 1970-01-01
    • 1970-01-01
    • 2018-03-21
    相关资源
    最近更新 更多