我需要计算管道聚合返回的结果集中的存储桶数。问题是我的查询在这里使用脚本选择器:
POST visitor_carts/_search
{
"size": 0,
"aggs": {
"visitors": {
"terms": {"field" : "visitor_id"},
"aggs": {
"one_purchase": {
"bucket_selector": {
"buckets_path": {
"nb_purchases": "_count"
},
"script": "params.nb_purchases == 3"
}
}
}
}
}
}
返回类似这样的内容:
{
"took" : 0,
"timed_out" : false,
"_shards" : {
"total" : 1,
"successful" : 1,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : 5,
"max_score" : 0.0,
"hits" : [ ]
},
"aggregations" : {
"visitors" : {
"doc_count_error_upper_bound" : 0,
"sum_other_doc_count" : 0,
"buckets" : [
{
"key" : "2",
"doc_count" : 3
},
{
"key" : "3",
"doc_count" : 3
}
]
}
}
}
在该buckets
键下,我可以看到一个满足我条件的访问者列表(由标识的每个访问者都visitor_id
必须在visitor_carts
索引中恰好有三个文档),但这不是很有用,因为它可以处理成千上万的访问者。我正在使用PHP处理结果,从理论上讲,它可以计算结果集,但是对于大量的访问者来说,这并不是最好的主意。有没有一种方法可以仅在doc_count_error_upper_bound
和旁边输出有效存储区的数量sum_other_doc_count
?bucket_count
汇总统计数据中没有包含统计信息,这有点奇怪,因为它似乎很有用。
这是我的visitor_carts
映射:
{
"mapping": {
"_doc": {
"dynamic": "false",
"properties": {
"created_dt": {
"type": "date",
"format": "yyyy-MM-dd HH:mm:ss"
},
"order_id": {
"type": "keyword"
},
"visitor_id": {
"type": "keyword"
}
}
}
}
}
您可以利用“
统计数据桶聚合”来获取存储桶数。
以下是查询的方式。
POST visitor_carts/_search
{
"size": 0,
"aggs": {
"visitors": {
"terms": {
"field" : "visitor_id"
},
"aggs": {
"one_purchase": {
"bucket_selector": {
"buckets_path": {
"nb_purchases": "_count"
},
"script": "params.nb_purchases == 3"
}
}
}
},
"mybucketcount":{
"stats_bucket": {
"buckets_path":"visitors._count"
}
}
}
}
{
"took": 1,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"failed": 0
},
"hits": {
"total": 8,
"max_score": 0,
"hits": []
},
"aggregations": {
"visitors": {
"doc_count_error_upper_bound": 0,
"sum_other_doc_count": 0,
"buckets": [
{
"key": "2",
"doc_count": 3
},
{
"key": "3",
"doc_count": 3
}
]
},
"mybucketcount": {
"count": 2, <---- This is the count you are looking for
"min": 3,
"max": 3,
"avg": 3,
"sum": 6
}
}
}
让我知道是否有帮助!
问题内容: 如何计算存储过程将以最快的方式返回的行数。存储过程返回大约100K到1M记录的行。 问题答案: 选择: 执行存储过程后。
此处为elasticsearch新用户,但存在术语聚合问题。我为187份文档编制了索引,其中包含“名称”、“主机”、“风险”等字段。字段风险有4个唯一值(“关键”、“高”、“中”、“低”、“信息”),我正在运行这样的术语聚合: 我希望得到一个结果,说明我有x个临界值,x个高值等等。问题是,我没有得到返回的桶。 我的Elasticsearch版本是7.12.0有什么想法吗 > 编辑:这是映射: 以下
我想根据top hits聚合中第一个元素所拥有的属性,从terms聚合中订购Bucket。 我的尽力而为查询如下(有语法错误): 有人知道如何做到这一点吗? 例子: 按“a”分组,按“id”(desc)排序存储桶,并按“b”(desc)排序最热门的内容,将给出:
我是Java8流api的新手,我正在寻求一种解决方案,以运行我的对象列表并聚合某些属性,从而最终能够获得该属性类型和所有聚合结果的新列表。 例如,我的列表中有10个person对象,我想要一个基于第一人称年龄的所有年龄差异的列表 在执行流魔术之后,结果应该是int类型的,并且看起来如下所示
我正在使用Elasticsearch bucket聚合。我有一组文档,每个文档都有一个类别字段,它是一个数组。我需要获得每个类别的数量以及搜索结果。但目前,我得到了错误的doc\u计数。 这是我的聚合查询 } 下面是我得到的错误doc\u计数的结果。
问题内容: 我要分析一组客户。我对客户增长感兴趣,例如: 自上周以来增加了43位新客户(+ 32%) 自去年以来+12650(+ 1140%)新客户 该怎么办: 获得本周创造的客户 获取上周创建的客户 数他们 计算差异(百分比) 因此,首先,我将创建一个直方图,按周对客户进行分类: 这例如导致 然后,我只需要获取最后两个条目并计算差异,然后将其分配给buckets集合之外的字段。在Elastics