gpt4 book ai didi

mongodb - Elasticsearch mongo-connector KeyError _id

转载 作者:行者123 更新时间:2023-12-03 00:15:32 28 4
gpt4 key购买 nike

我正在使用 mongo-connector 与 elast2-doc-manager 作为文档管理器同步来自 mongoDB replicaSet 的数据。

我将 mongo-connector 运行为:

$mongo-connector --auto-commit-interval=5 --verbose -m 127.0.0.1:27017 -t localhost:9200 -d elastic2_doc_manager --namespace-set=db.collection1,db.collection2 --fields=f1,f2,f3

在某些时候,我得到了这个异常(exception):
Traceback (most recent call last):  
File "/usr/lib/python2.7/threading.py", line 551, in __bootstrap_inner
self.run()
File "/usr/local/lib/python2.7/dist-packages/mongo_connector/util.py", line 85, in wrapped
func(*args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/mongo_connector/oplog_manager.py", line 261, in run
docman.upsert(doc, ns, timestamp)
File "/usr/local/lib/python2.7/dist-packages/mongo_connector/util.py", line 32, in wrapped
return f(*args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/mongo_connector/doc_managers/elastic2_doc_manager.py", line 150, in upsert
doc_id = u(doc.pop("_id"))

我添加了一个 try/except 包装方法 File "/usr/local/lib/python2.7/dist-packages/mongo_connector/doc_managers/elastic2_doc_manager.py" Line 148在异常情况下打印有问题的文档。

不知何故 _id打印的文档中缺少。但是,如果我直接从交互式 cmd 查询 mongo,我可以获取相同的文档,并且 _id key 存在。

所以不知道为什么 mongo-connector/elastic2_doc_manager没有看到 _id一些文件的属性。

最佳答案

无论出于何种原因,Mongo-connector 似乎删除了 _id从您的文档中。然而反过来,来自 mongodb 的 ObjectId 的字符串表示形式在 elasticsearch 中存储为 _id。它仍然存在,但它不在文档中,或者 Elasticsearch 将其称为“源”。

看一下查询结果,它的结构如下:

{
"took" : 7,
"timed_out" : false,
"_shards" : {
"total" : 3,
"successful" : 3,
"failed" : 0
},
"hits" : {
"total" : 135513,
"max_score" : 1.0,
"hits" : [ {
"_index" : "myIndex",
"_type" : "myType",
"_id" : "5294b93e6c255bb82d0000c0", <-- ID from mongodb
"_score" : 1.0,
"_source":{
"some": "data",
"my": "document"
},
{
"_index" : "myIndex",
"_type" : "myType",
"_id" : "5294b93e6c255bb82d0000de", <-- ID from mongodb
"_score" : 1.0,
"_source":{
"some": "data2",
"my": "document2"
}
}]
}
}

我的印象是 mongo-connector 是故意这样做的。仅将 _id 存储在适当的 ES 字段中,尽管我看不出有理由从 _source 中删除 _id的文件以及。但是,我注意到在使用 elastic_doc_manager(v1) 时,ES 中的文档缺少 id。

关于mongodb - Elasticsearch mongo-connector KeyError _id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36507387/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com