【问题标题】:unable to run mongo-connector无法运行 mongo-connector
【发布时间】:2016-06-10 05:06:42
【问题描述】:

我已经在 mongodb 服务器中安装了 mongo-connector。

我是通过给出命令来执行的

mongo-connector -m [remote mongo server IP]:[remote mongo server port] -t [elastic search server IP]:[elastic search server Port]  -d elastic_doc_manager.py

我也尝试过,因为 mongo 使用默认端口在同一台服务器上运行。

mongo-connector -t [elastic search server IP]:[elastic search server Port]  -d elastic_doc_manager.py

我遇到错误

Traceback (most recent call last):
  File "/usr/local/bin/mongo-connector", line 9, in <module>
    load_entry_point('mongo-connector==2.3.dev0', 'console_scripts', 'mongo-connector')()

  File "/usr/local/lib/python2.7/dist-packages/mongo_connector-2.3.dev0-py2.7.egg/mongo_connector/util.py", line 85, in wrapped
    func(*args, **kwargs)

  File "/usr/local/lib/python2.7/dist-packages/mongo_connector-2.3.dev0-py2.7.egg/mongo_connector/connector.py", line 1037, in main
    conf.parse_args()

  File "/usr/local/lib/python2.7/dist-packages/mongo_connector-2.3.dev0-py2.7.egg/mongo_connector/config.py", line 118, in parse_args
    option, dict((k, values.get(k)) for k in option.cli_names))

  File "/usr/local/lib/python2.7/dist-packages/mongo_connector-2.3.dev0-py2.7.egg/mongo_connector/connector.py", line 820, in apply_doc_managers
    module = import_dm_by_name(dm['docManager'])

  File "/usr/local/lib/python2.7/dist-packages/mongo_connector-2.3.dev0-py2.7.egg/mongo_connector/connector.py", line 810, in import_dm_by_name
    "Could not import %s." % full_name)

**mongo_connector.errors.InvalidConfiguration: Could not import mongo_connector.doc_managers.elastic_doc_manager.py.**

注意:我使用的是 python2.7 和 mongo-connector 2.3

弹性搜索服务器是2.2

有什么建议吗?

[编辑] 应用Val的建议后:

2016-02-29 19:56:59,519 [关键] mongo_connector.oplog_manager:549 - 收集转储期间的异常

Traceback(最近一次调用最后一次):

文件 "/usr/local/lib/python2.7/dist-packages/mongo_connector-2.3.dev0-py2.7.egg/mongo_connector/oplog_manager.py", 第 501 行,在 do_dump 中

upsert_all(dm)

文件 "/usr/local/lib/python2.7/dist-packages/mongo_connector-2.3.dev0-py2.7.egg/mongo_connector/oplog_manager.py", 第 485 行,在 upsert_all dm.bulk_upsert(docs_to_dump(namespace), mapped_ns, long_ts)

文件 “/usr/local/lib/python2.7/dist-packages/mongo_connector-2.3.dev0-py2.7.egg/mongo_connector/util.py”,第 32 行,已包装

返回 f(*args, **kwargs)

文件 “/usr/local/lib/python2.7/dist-packages/mongo_connector-2.3.dev0-py2.7.egg/mongo_connector/doc_managers/elastic_doc_manager.py”,第 190 行,在 bulk_upsert 中

好的,回复:

文件 "/usr/local/lib/python2.7/dist-packages/elasticsearch-1.9.0-py2.7.egg/elasticsearch/helpers/init.py", 第 160 行,在 streaming_bulk 中

对于_process_bulk_chunk(client, bulk_actions, raise_on_exception, raise_on_error, **kwargs):

文件 "/usr/local/lib/python2.7/dist-packages/elasticsearch-1.9.0-py2.7.egg/elasticsearch/helpers/init.py", 第 132 行,在 _process_bulk_chunk 中

raise BulkIndexError('%i 个文档索引失败。' % len(errors), 错误)

BulkIndexError: (u'2 个文档未能 index.',..document_class=dict, tz_aware=False, connect=True, replicaset=u'mss'), u'local'), u'oplog.rs')

2016-02-29 19:56:59,835 [错误] mongo_connector.connector:302 - MongoConnector:OplogThread 意外停止!关机


嗨,瓦尔,

我连接了另一个 mongodb 实例,该实例只有一个数据库,有一个包含 30,000 多条记录的集合,并且我能够成功执行它。以前的 mongodb 集合有多个数据库(大约 7 个),内部有多个集合(每个数据库大约 5 到 15 个),并且所有集合中的文档数量都很大(从 500 到 50,000 不等)。

Mongo-connector 是否因为 mongo 数据库中存在大量数据而失败?

我还有其他疑问

一个。是否可以仅对位于不同数据库中的 mongodb 中的特定集合进行索引?我想只索引特定的集合(而不是整个数据库)。我怎样才能做到这一点?

b.在弹性搜索中,我可以看到一个集合的重复索引。第一个是数据库名称(如预期的那样),另一个是名称 mongodb_meta,它们都具有相同的数据,如果我要更改集合,则两个集合中都会发生更新。

c。是否可以配置输出索引名称或任何其他参数?

【问题讨论】:

  • 找到答案)参考:github.com/mongodb-labs/mongo-connector/wiki/FAQ Elasticsearch 中的 mongodb_meta 索引是什么? Mongo 连接器在 Elasticsearch 中创建一个 mongodb_meta 索引,以跟踪文档的最后修改时间。这用于在发生副本集回滚事件时解决冲突,但保存在单独的索引中,以便在必要时可以轻松删除。

标签: mongodb elasticsearch


【解决方案1】:

试试这个。 pip install 'elastic2-doc-manager[elastic5]'

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

【讨论】:

    【解决方案2】:

    answer on github

    你的策略在我看来是合理的。这样做的方法如下:

    生成一个 mongo-connector 时间戳文件:

    运行 mongo-connector --no-dump。

    mongo-connector 启动后立即停止。现在你有一个 oplog.timestamp 文件指向 oplog 上的最新条目。

    在主节点上运行 mongodump。转储已经反映了所有 mongo-connector 在 oplog 中看到的更改。

    在目标 MongoDB 上使用 (2) 中的转储运行 mongorestore。

    重启 mongo-connector。将(1)中生成的文件传入 --oplog-ts 选项。

    我会将它添加到 wiki。

    【讨论】:

      【解决方案3】:

      它在使用 --oplog-ts 选项给出以下命令后开始工作。

      mongo-connector -m localhost:27017 -t localhost:37017 -d mongo_doc_manager --oplog-ts oplogstatus.txt
      

      但如果我使用配置文件,它会失败。请告知如何解决此问题。

      C:\Dev\mongodb\mongo-connector>mongo-connector -c myconfig.json --oplog-ts oplogstatus.txt
      Fatal Exception
      Traceback (most recent call last):
        File "C:\Program Files\Python\lib\site-packages\mongo_connector-2.5.0.dev0-py3.6.egg\mongo_connector\config.py", line 110, in parse_args
          self.load_json(f.read())
        File "C:\Program Files\Python\lib\site-packages\mongo_connector-2.5.0.dev0-py3.6.egg\mongo_connector\config.py", line 132, in load_json
          parsed_config = json.loads(text)
        File "C:\Program Files\Python\lib\json\__init__.py", line 319, in loads
          return _default_decoder.decode(s)
        File "C:\Program Files\Python\lib\json\decoder.py", line 339, in decode
          obj, end = self.raw_decode(s, idx=_w(s, 0).end())
        File "C:\Program Files\Python\lib\json\decoder.py", line 355, in raw_decode
          obj, end = self.scan_once(s, idx)
      json.decoder.JSONDecodeError: Invalid \escape: line 6 column 21 (char 201)
      
      During handling of the above exception, another exception occurred:
      
      Traceback (most recent call last):
        File "C:\Program Files\Python\lib\site-packages\mongo_connector-2.5.0.dev0-py3.6.egg\mongo_connector\util.py", line 90, in wrapped
          func(*args, **kwargs)
        File "C:\Program Files\Python\lib\site-packages\mongo_connector-2.5.0.dev0-py3.6.egg\mongo_connector\connector.py", line 1059, in main
          conf.parse_args()
        File "C:\Program Files\Python\lib\site-packages\mongo_connector-2.5.0.dev0-py3.6.egg\mongo_connector\config.py", line 112, in parse_args
          reraise(errors.InvalidConfiguration, *sys.exc_info()[1:])
        File "C:\Program Files\Python\lib\site-packages\mongo_connector-2.5.0.dev0-py3.6.egg\mongo_connector\compat.py", line 9, in reraise
          raise exctype(str(value)).with_traceback(trace)
        File "C:\Program Files\Python\lib\site-packages\mongo_connector-2.5.0.dev0-py3.6.egg\mongo_connector\config.py", line 110, in parse_args
          self.load_json(f.read())
        File "C:\Program Files\Python\lib\site-packages\mongo_connector-2.5.0.dev0-py3.6.egg\mongo_connector\config.py", line 132, in load_json
          parsed_config = json.loads(text)
        File "C:\Program Files\Python\lib\json\__init__.py", line 319, in loads
          return _default_decoder.decode(s)
        File "C:\Program Files\Python\lib\json\decoder.py", line 339, in decode
          obj, end = self.raw_decode(s, idx=_w(s, 0).end())
        File "C:\Program Files\Python\lib\json\decoder.py", line 355, in raw_decode
          obj, end = self.scan_once(s, idx)
      mongo_connector.errors.InvalidConfiguration: Invalid \escape: line 6 column 21 (char 201)
      

      【讨论】:

        【解决方案4】:

        我发现这个选项只能运行特定的集合。

        $ mongo-connector -m mongodbserver:27017 -t elasticserver:9200 -d elastic_doc_manager --oplog-ts oplogstatus.txt --namespace-set database.collection

        【讨论】:

          【解决方案5】:

          我认为唯一的问题是您在文档管理器上有 .py 扩展名(在 mongo-connector 2.0 之前需要它),您只需将其删除:

          mongo-connector -m [remote mongo server IP]:[remote mongo server port] -t [elastic search server IP]:[elastic search server Port]  -d elastic_doc_manager
          

          【讨论】:

          • 宾果游戏.. 再次感谢@val。虽然,它现在正在抛出一些其他错误。我现在正在调查。 :),非常感谢.. !!!
          • 什么样的错误?随时分享您的问题的更新。
          猜你喜欢
          • 2017-01-20
          • 1970-01-01
          • 1970-01-01
          • 2020-12-24
          • 1970-01-01
          • 2022-10-17
          • 1970-01-01
          • 2015-07-03
          • 2021-02-16
          相关资源
          最近更新 更多