所以我有一个例子,我需要使用最热门的转换,我想显示数据的基础
我有这些数据
email col2 col3 col4 col5 Time
a.com a a a a 11:00
a.com a a a a 11:01
a.com a b a a 11:02
我想删除重复的电子邮件,并只显示基于最新时间。我正在使用transform并基于max time进行聚合。我选择了我需要的每一个领域。它返回如下数据:i转换索引并使其按以下方式分组:email、col2、col3、col4并按max(time)聚合
当前索引
email col2 col3 col4 col5 Time
a.com a a a a 11:01
a.com a b a a 11:02
我只想让它显示我的目标
email col2 col3 col4 col5 Time
a.com a b a a 11:02
如何在groupby email基础上进行转换?因为我需要所有的字段,但我不认为添加所有的as group by是正确的,但是只有2种方法,要么是aggregation要么是groupby
我的转变定义:它不是我所需要的
{
"id": "transform_baru",
"source": {
"index": [
"email-profile-nov-bug*"
],
"query": {
"match_all": {}
}
},
"dest": {
"index": "transform_baru"
},
"pivot": {
"group_by": {
"Email.keyword": {
"terms": {
"field": "Email.keyword"
}
},
"fa.keyword": {
"terms": {
"field": "fa.keyword"
}
},
"ever.keyword": {
"terms": {
"field": "ever.keyword"
}
},
"bln.keyword": {
"terms": {
"field": "bln.keyword"
}
},
"domain.keyword": {
"terms": {
"field": "domain.keyword"
}
},
"Email_age_category.keyword": {
"terms": {
"field": "Email_age_category.keyword"
}
},
"Status_Category.keyword": {
"terms": {
"field": "Status_Category.keyword"
}
},
"Vintage_cat.keyword": {
"terms": {
"field": "Vintage_cat.keyword"
}
}
},
"aggregations": {
"extract_date.max": {
"max": {
"field": "extract_date"
}
}
}
},
"settings": {},
"version": "7.8.0",
"create_time": 1607832008196
}
1条答案
按热度按时间1cklez4t1#
使用这个tophit解决方法解决了问题,但我无法使用它。使用方法如下:
只选择所需的groupby。在我的情况下,我只会添加电子邮件
编辑json配置并使用最新的文档脚本添加聚合
将“@timestamp”字段更改为您的时间字段。
所以从技术上讲,您只使用电子邮件作为groupby,使用最新的文档作为聚合
在预览中,可能只显示您选择作为分组依据的字段,但在创建转换索引时,该字段的其余部分将显示在latest.doc脚本下。所以不用担心,只需创建转换
我希望这能帮助一些有弹性的新手使用这个变通方法。
谢谢所有帮助我的人。干杯