我得到了以下弹性搜索查询,以便获得按产品id和销售小时分组的每小时产品销售量。
POST /my_sales/_search?size=0
{
"aggs": {
"sales_per_hour": {
"date_histogram": {
"field": "event_time",
"fixed_interval": "1h",
"format": "yyyy-MM-dd:HH:mm"
},
"aggs": {
"sales_per_hour_per_product": {
"terms": {
"field": "name.keyword"
}
}
}
}
}
}
数据的一个示例:
{
"@timestamp" : "2020-10-29T18:09:56.921Z",
"name" : "my-beautifull_product",
"event_time" : "2020-10-17T08:01:33.397Z"
}
这个查询返回几个存储桶(每小时一个,每个产品),但我想只检索那些doc_count大于10的存储桶,这是可能的吗?对于这些结果,我想知道产品的id和event_time存储桶。
谢谢你的帮助。
发布于 2020-11-10 02:41:06
也许使用Bucket Selector功能可以帮助过滤掉结果。
发布于 2020-11-10 09:46:09
尝试下面的搜索查询:
{
"aggs": {
"sales_per_hour": {
"date_histogram": {
"field": "event_time",
"fixed_interval": "1h",
"format": "yyyy-MM-dd:HH:mm"
},
"aggs": {
"sales_per_hour_per_product": {
"terms": {
"field": "name.keyword"
},
"aggs": {
"the_filter": {
"bucket_selector": {
"buckets_path": {
"the_doc_count": "_count"
},
"script": "params.the_doc_count > 10"
}
}
}
}
}
}
}
}
它会根据 "params.the_doc_count > 10"
过滤出计数大于10的所有文档
发布于 2020-11-11 01:33:19
谢谢你的帮助这离我想要的不远,但不完全是;有了桶选择器,我有了类似的东西:
"aggregations" : {
"sales_per_hour" : {
"buckets" : [
{
"key_as_string" : "2020-08-31:23:00",
"key" : 1598914800000,
"doc_count" : 16,
"sales_per_hour_per_product" : {
"doc_count_error_upper_bound" : 0,
"sum_other_doc_count" : 0,
"buckets" : [
{
"key" : "my_product_1",
"doc_count" : 2
},
{
"key" : "my_product_2",
"doc_count" : 2
},
{
"key" : "myproduct_3",
"doc_count" : 12
}
]
}
}
]
}
有时,没有一个存储桶大于10,是否有可能具有相同的东西,但将_count上的过滤器应用于第二级聚合(sales_per_hour_per_product)而不是第一级聚合(sales_per_hour)?
https://stackoverflow.com/questions/64756889
复制相似问题