在Logstash管道中将mongodb\u id对象强制转换为字符串
我正在创建一个管道,使用Logstash从MongoDB到ElasticSearch获取数据。 我使用的是dbschema mongodb jdbc驱动程序。我可以使用驱动程序连接到数据库,但我遇到了id问题。在MongoDB中,它的类型是对象,所以我对转换器有问题。这是我得到的错误在Logstash管道中将mongodb\u id对象强制转换为字符串,mongodb,elasticsearch,logstash,Mongodb,elasticsearch,Logstash,我正在创建一个管道,使用Logstash从MongoDB到ElasticSearch获取数据。 我使用的是dbschema mongodb jdbc驱动程序。我可以使用驱动程序连接到数据库,但我遇到了id问题。在MongoDB中,它的类型是对象,所以我对转换器有问题。这是我得到的错误 Exception when executing JDBC query {:exception=>#<Sequel::DatabaseError: Java::OrgLogstash::MissingC
Exception when executing JDBC query {:exception=>#<Sequel::DatabaseError: Java::OrgLogstash::MissingConverterException: Missing Converter handling for full class name=org.bson.types.ObjectId, simple name=ObjectId>}
是否有任何方法可以转换/转换或在筛选器中执行某些操作以将_id的数据类型从object更改为string在筛选器中尝试此代码
filter {
mutate {
remove_field => [ "_id" ]
}}
试一试
由于在elasticsearch中,
\u id
是一个保留字段(您可以在PUT操作中将\u id
传递给索引API以更新文档),因此您必须应用一个过滤器,使mongodb\u id
发生变异,例如:
过滤器{
变异{
重命名=>[“\u id”,“mongo\u id”]
}
}
“试试这个”答案不鼓励在StackOverflow上使用,请仅在您确信它会起作用的情况下发布答案,并解释原因。此外,OP要求强制转换,而不是删除\u id
fieldTry和check语句主要是评论部分的一部分,如果您不确定它是否能解决问题,则不应作为答案。一旦你有足够的声誉,你也可以添加评论。在这种情况下,请添加注释而不是答案。如果我需要ObjectId,比如数组=[ObjectId(“5fa4eb465f1a33052bf16ec8”)]-对象ID数组,该怎么办?您找到解决方案了吗?
filter {
mutate {
remove_field => [ "_id" ]
}}
statement => "db.getCollection('Employee').find({ },{'_id': false})"