ubuntu 14.14 上的 mongo-connector 错误

Posted

技术标签:

【中文标题】ubuntu 14.14 上的 mongo-connector 错误【英文标题】:mongo-connector error on ubuntu 14.14 【发布时间】:2016-10-01 10:50:32 【问题描述】:

mongoconnector 以前可以工作,但现在不行。这是错误的很长跟踪的一部分:

...
   return f(*args, **kwargs)
  File "/home/ubuntu/anaconda/lib/python2.7/site-packages/mongo_connector/doc_managers/elastic2_doc_manager.py", line 203, in bulk_upsert
    for ok, resp in responses:
  File "/home/ubuntu/anaconda/lib/python2.7/site-packages/elasticsearch/helpers/__init__.py", line 160, in streaming_bulk
    for result in _process_bulk_chunk(client, bulk_actions, raise_on_exception, raise_on_error, **kwargs):
  File "/home/ubuntu/anaconda/lib/python2.7/site-packages/elasticsearch/helpers/__init__.py", line 132, in _process_bulk_chunk
    raise BulkIndexError('%i document(s) failed to index.' % len(errors), errors)
BulkIndexError: (u'86 document(s) failed to index.', [u'index': u'status': 400, u'_type': u'wikis', u'_id': u'574f3f9253a18f8397ecc13a', u'error': u'caused_by': u'reason': u'Cannot parse "+1960-00-00T00:00:00Z": Value 0 for monthOfYear must be in the range [1,12]', u'type': u'illegal_field_value_exception', u'reason': u'failed to parse [claims.P1082.qualifiers.P585.datavalue.value.time]', u'type': u'mapper_parsing_exception', u'_index': u'test1', 
...
2016-06-01 21:32:55,806 [ERROR] mongo_connector.oplog_manager:557 - OplogThread: Failed during dump collection cannot recover! Collection(Database(MongoClient('localhost', 27017), u'local'), u'oplog.rs')
2016-06-01 21:32:56,618 [ERROR] mongo_connector.connector:302 - MongoConnector: OplogThread <OplogThread(Thread-6, started 139915396376320)> unexpectedly stopped! Shutting down

在外面启动 MongoDB:

$ mongod --dbpath data --replSet "rs0" #在端口27017上创建副本集

$ mongo #初始化副本集

在 mongo repl 中,我输入:

rs.initiate("_id" : "rs0","version" : 1,"members" : ["_id" : 0,"host" : "localhost:27017"])

Elasticsearch 已经在 9200 端口启动。

现在一起

$ mongo-connector -m localhost:27017 -t localhost:9200 -d elastic2_doc_manager

...然后我得到错误。

【问题讨论】:

【参考方案1】:

潜在的错误看起来像

u'reason': u'Cannot parse "+1960-00-00T00:00:00Z": Value 0 for monthOfYear must be in the range [1,12]', u'type': u'illegal_field_value_exception'

这仅仅意味着您在 MongoDB 中的一个文档具有无效的日期 +1960-00-00T00:00:00Z 以及无效的月份 (00) 和日期 (00)。

您需要找到该记录并修复它,然后复制将起作用,前提是您没有另一条存在相同问题的记录。

【讨论】:

我可以修复它,但我希望会有很多这样的。你知道如何在 mongo-connector 中添加一个参数来告诉它在从 MongoDB 复制到 Elasticsearch 时忽略错误吗? 确实,86 个文档未能编入索引。出错的不是 mongo-connector,而是简单地报告 Elasticsearch 抱怨的内容。俗话说,你让垃圾进来,你就会把垃圾拿出来。您应该在数据进入 MongoDB 之前对其进行验证 有这方面的消息吗? 我被拉进了另一个项目,但当我回到这个项目时我会更新。需要注意的是,86 篇文章以百万计失败是我可以接受的错误率(对于***)。此外,我还发现了一篇将 Wikipedia 直接加载到 Elasticsearch 中的博文。虽然不那么简单,但这也意味着将避免复制千兆字节的数据。

以上是关于ubuntu 14.14 上的 mongo-connector 错误的主要内容,如果未能解决你的问题,请参考以下文章

[ubuntu][mysql 5.7]安装后没有密码?如何登录

ubuntu16.04安装LNMP(ubuntu+Nginx+mysql+PHP7.0)

数据库的导入和授权用户

登录时Akeneo永远不会停止加载

斑马斑马-08-白云之上-python在Linux上的部署

如何找到依赖于已弃用库的 PHP 模块?