Kibana Tophits 按字段而非所有字段转换组
Kibana Tophits on transform group by a field not all field
所以我有这种情况,我需要在转换时使用热门点击
我想显示基于
的数据
我有这个数据
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
我想去掉重复的邮件,只显示最近的时间。我正在使用转换并根据最大时间聚合它。对于组,我选择我需要的每个字段。它 returns 数据如:
我转换索引并将其分组:电子邮件、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
我怎样才能只基于电子邮件分组而不是每个字段进行转换?因为我需要所有字段,但我不认为添加所有 as group by 是正确的,但只有 2 种方法,聚合或 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
}
使用这个 Tophit workaround 解决了问题
但我无法使用它。使用方法如下:
- 只选择你需要的groupby。就我而言,我只会添加 Email
- 编辑 json 配置并使用 latest_doc 脚本添加聚合
- 将“@timestamp”字段更改为您的时间字段。
- 所以从技术上讲,您只使用电子邮件作为分组依据,latest_doc作为聚合
- 在预览中,它可能只显示您选择作为分组依据的字段,但是当创建转换索引时,其余字段将显示在 latest.doc 脚本下。所以别担心,只需创建 transform
我希望这会帮助一些弹性新手使用这个解决方法。
感谢所有试图帮助我的人。干杯
所以我有这种情况,我需要在转换时使用热门点击 我想显示基于
的数据我有这个数据
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
我想去掉重复的邮件,只显示最近的时间。我正在使用转换并根据最大时间聚合它。对于组,我选择我需要的每个字段。它 returns 数据如: 我转换索引并将其分组:电子邮件、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
我怎样才能只基于电子邮件分组而不是每个字段进行转换?因为我需要所有字段,但我不认为添加所有 as group by 是正确的,但只有 2 种方法,聚合或 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
}
使用这个 Tophit workaround 解决了问题 但我无法使用它。使用方法如下:
- 只选择你需要的groupby。就我而言,我只会添加 Email
- 编辑 json 配置并使用 latest_doc 脚本添加聚合
- 将“@timestamp”字段更改为您的时间字段。
- 所以从技术上讲,您只使用电子邮件作为分组依据,latest_doc作为聚合
- 在预览中,它可能只显示您选择作为分组依据的字段,但是当创建转换索引时,其余字段将显示在 latest.doc 脚本下。所以别担心,只需创建 transform
我希望这会帮助一些弹性新手使用这个解决方法。
感谢所有试图帮助我的人。干杯