Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Logstash管道中将mongodb\u id对象强制转换为字符串_Mongodb_<img Src="//i.stack.imgur.com/RUiNP.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">elasticsearch_Logstash - Fatal编程技术网 elasticsearch,logstash,Mongodb,elasticsearch,Logstash" /> elasticsearch,logstash,Mongodb,elasticsearch,Logstash" />

在Logstash管道中将mongodb\u id对象强制转换为字符串

在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

我正在创建一个管道,使用Logstash从MongoDB到ElasticSearch获取数据。 我使用的是dbschema mongodb jdbc驱动程序。我可以使用驱动程序连接到数据库,但我遇到了id问题。在MongoDB中,它的类型是对象,所以我对转换器有问题。这是我得到的错误

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})"