gpt4 book ai didi

elasticsearch - 通过弹性获取具有唯一值(value)的所有文档

转载 作者:行者123 更新时间:2023-12-03 00:00:31 25 4
gpt4 key购买 nike

例如:
我有很多这样的文件:

email status
1@123.com open
1@123.com click
2@123.com open
3@123.com open

由于记录“1@123.com”包含“点击”状态,因此我将查询具有唯一状态值:“打开”的所有文档,所以不要期望“1@123.com”!

我在下面尝试过,但是没有我的期望:
{
"aggs": {
"hard_bounce_count": {
"filter": {
"term": {
"actionStatus": "open"
}
},
"aggs": {
"email_count": {
"value_count": {
"field": "email"
}
}
}

我的预期回应是这样的:
2@123.com open
3@123.com open

我该怎么做,谢谢..

最佳答案

在这里,外部术语-ggs(名为 EMAIL_LIST )返回所有电子邮件,然后在每个电子邮件存储桶中,首先查找状态是否为打开(使用名称为 OPEN 的filter-ags),然后查找状态是否为除了“打开”(使用另一个名为 OTHER_THAN_OPEN 的过滤器集)

{
"size": 0,
"aggs": {
"EMAIL_LIST": {
"terms": {
"field": "email.keyword"
},
"aggs": {
"OPEN": {
"filter": {
"bool": {
"must": [
{
"term": {
"status": "open"
}
}
]
}
}
},
"OTHER_THAN_OPEN": {
"filter": {
"bool": {
"must_not": [
{
"term": {
"status": "open"
}
}
]
}
}
},
"SELECTION_SCRIPT": {
"bucket_selector": {
"buckets_path": {
"open_count": "OPEN._count",
"other_than_open_count": "OTHER_THAN_OPEN._count"
},
"script": "params.other_than_open_count==0 && params.open_count>0"
}
}
}
}
}
}

在“bucket_selector”聚合上方,仅选择要输出的,仅具有 打开状态的存储桶
 "aggregations": {
"EMAIL_LIST": {
"doc_count_error_upper_bound": 0,
"sum_other_doc_count": 0,
"buckets": [
{
"key": "2@123.com",
"doc_count": 1,
"OTHER_THAN_OPEN": {
"doc_count": 0
},
"OPEN": {
"doc_count": 1
}
},
{
"key": "3@123.com",
"doc_count": 1,
"OTHER_THAN_OPEN": {
"doc_count": 0
},
"OPEN": {
"doc_count": 1
}
}
]
}
}

因此最终答案将是电子邮件“2@123.com”和“3@123.com”

关于elasticsearch - 通过弹性获取具有唯一值(value)的所有文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49399197/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com