【发布时间】:2021-04-04 09:58:03
【问题描述】:
Mongodb有2种$oid引用-
类型 1 -
//MongoDB
city_id : "5fe3206428bf745876649fd3"
//Kafka Message
city_id : {
"$oid": "5fe3206428bf745876649fd3"
}
类型 2 -
//MongoDB
city_ids : ["5fe3206428bf745876649fd3","5fe3206428bf745876649fd3","5fe3206428bf745876649fd3"]
//Kafka Message
city_ids : [
{
"$oid": "5fe3206428bf745876649fd3"
},
{
"$oid": "5fe3206428bf745876649fd3"
},
{
"$oid": "5fe3206428bf745876649fd3"
}
]
我如何在logstash中处理这两种类型,以便我得到elasticsearch的确切数据结构,因为它保存在MongoDB中。
input {
kafka {
bootstrap_servers => "localhost:9092"
decorate_events => true
topics => ["users","organisations","cities"]
}
}
filter {
json {
source => "message"
target => "json_payload"
}
json {
source => "[json_payload][payload]"
target => "payload"
}
mutate {
rename => { "[payload]" => "document"}
remove_field => ["message","json_payload","payload"]
add_field => {
"[es_index]" => "%{[@metadata][kafka][topic]}"
"[mongo_id]" => "%{[document][_id][$oid]}"
}
}
}
output {
elasticsearch {
hosts => ["localhost:9200"]
index => "%{es_index}"
document_id => "%{mongo_id}"
}
stdout {
codec =>
rubydebug {
metadata => true
}
}
}
这是对之前question 的跟进。
【问题讨论】:
标签: mongodb elasticsearch apache-kafka logstash