当前位置: 首页 > 知识库问答 >
问题:

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

慕学海
2023-03-14

如何在elasticsearch聚合中使用分页(size和from),我在Agregition中使用了size和from,它为exmaple抛出异常<我想问一下?

得到 /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个答案

孙佑运
2023-03-14

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

>

运行基数计数

然后根据基数定义分区=(基数计数/大小)(这个大小必须小于获取大小)

现在,您可以使用分区过滤器来迭代分区-请注意,大小必须足够大,因为结果在各个存储桶之间并不是平均分割的。

段干帅
2023-03-14

到目前为止,不支持此功能。

这上面有一个bug,但它仍处于讨论模式。

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

 类似资料:
  • 我需要在其中一个索引中进行聚合排序分页。 我了解了弹性搜索的内部功能, 我总共有5个分片,它会对各个分片进行排序并获取结果,默认情况下每个分片将返回10条记录。然后再次对50条记录进行排序,它将获取前10条记录,因为默认大小为10。 输出: 聚合结果在名为“聚合”的单独字段中返回。为了在此聚合数据中进行分页,size和from不起作用。 厌倦了做termBuilder.size(500),现在逻辑

  • 我正在使用聚合来根据其他字段的总和对一个字段进行分组。 它正在工作,但输出与我从数据库查询得到的结果不相似。 ES查询: 输出: "domain_agg":{"doc_count_error_upper_bound": 9,"sum_other_doc_count": 1442,"存储桶": [ { "key":"doc_count","doc_count": 2,"domain_store_co

  • 这是我的示例文档,我在kibana的帮助下为类似文档编制索引。 现在在文件中,“体验”下的关键“品牌”是主集团“公司”的子集团。正如您在文档中看到的,“品牌”可能有类似于“其他”的条目,但由“公司”键分隔。类似的结构可以在文档内部和文档之间出现。我打算根据“品牌”和“公司”来汇总文档。我尝试的查询是- 我得到的错误为- 这是我的文档的映射- 我知道我的经验字段没有嵌套,可能是这个错误的原因。我对e

  • 我知道elasticsearch允许子聚合(即嵌套聚合),但是我想对“第一次”聚合的结果应用聚合(或者在通用的任何查询中-聚合与否)。 具体示例:我记录有关用户操作的事件(为简单起见,我有带有和的文档)。我可以进行查询,计算每个用户执行的操作数量。但是我想找出“活跃用户”的百分比(或计数)(例如,执行了10个以上操作的用户)。理想的结果是所有用户的直方图,显示用户的活跃程度。 有没有办法创建这样的

  • 我已经为一个问题挣扎了一段时间,所以我想我应该通过stackoverflow来解决这个问题。 “我的文档类型”有一个标题、一个语言字段(用于筛选)和一个分组id字段(我省略了所有其他字段以保持重点) 搜索文档时,我希望找到包含标题中文本的所有文档。对于每个唯一的分组id,我只需要一个文档。 我一直在关注tophits聚合,从我所看到的情况来看,它应该能够解决我的问题。 对我的索引运行此查询时: 我

  • Elasticsearch版本:2.3.3 基本上,标题说明了一切。如果二个嵌套聚合下使用reverse_nested,尽管文档似乎通过限定范围(请参阅结果中的最后一个字段),但其后面的聚合不会以某种方式工作。 这里我准备了一个例子——一个文档是一个学生的注册日期和考试历史。 映射: 试验文件: 聚合查询(无实际意义): 结果是: ...您可以在其中看到聚合“newest_exam_date”不起