如何在弹性搜索聚合中使用分页(大小和从)?

时间:2015-02-11 14:03:12

标签: elasticsearch pagination aggregation

如何在弹性搜索聚合中使用分页(大小和从),我使用了大小和来自agreggition,s为例如抛出异常。
我想查询一下吗?

GET / index / nameorder / _search

{
    "size": 0,
    "query": {
        "filtered": {
            "query": {
                "bool": {
                    "must": [
                        {
                            "match": {
                                "projectId": "10057"
                            }
                        }
                    ]
                }
            },
            "filter": {
                "range": {
                    "purchasedDate": {
                        "from": "2012-02-05T00:00:00",
                        "to": "2015-02-11T23:59:59"
                    }
                }
            }
        }
    },
    "aggs": {
        "group_by_a": {
            "terms": {
                "field": "promocode",
                "size": 40,
                "from": 40
            },
            "aggs": {
                "TotalPrice": {
                    "sum": {
                        "field": "subtotalPrice"
                    }
                }
            }
        }
    }
}

2 个答案:

答案 0 :(得分:6)

截至目前,不支持此功能。

这有一个错误,但它仍处于讨论模式。

问题 - https://github.com/elasticsearch/elasticsearch/issues/4915

答案 1 :(得分:0)

为了在Elasticsearch中的聚合之上实现分页,您需要执行以下操作。

  1. 定义每个批次的大小。

  2. 运行cardinality count

  3. 然后根据基数定义partition =(基数计数/大小)(此大小必须小于访存大小)

  4. 现在您可以使用partition filter遍历分区-请注意大小必须足够大,因为结果不会在存储桶之间平均分配。