无法运行mongo-connector

时间:2016-02-26 20:17:27

标签: mongodb elasticsearch

我在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 [CRITICAL] mongo_connector.oplog_manager:549 -   集合转储期间的异常

     

追踪(最近一次呼叫最后一次):

     

文件   “/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

中      

引发BulkIndexError('%i文档无法索引。'%len(错误),   误差)

     

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意外停止了!关闭

嗨Val,

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

由于mongo数据库中存在大量数据,Mongo-connector是否失败?

我还有进一步的查询

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

湾在elasticsearch中,我可以看到一个集合的重复索引。第一个是数据库名称(如预期的那样),另一个名称为mongodb_meta,两者都具有相同的数据,如果我要更改集合,则更新将在两个集合中进行。

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

5 个答案:

答案 0 :(得分:1)

我认为唯一的问题是您在文档管理器上有.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

答案 1 :(得分:0)

我发现此选项仅用于运行特定集合。

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

答案 2 :(得分:0)

在使用--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)

答案 3 :(得分:0)

尝试一下。 pip install'elastic2-doc-manager [elastic5]'

mongo-connector -m本地主机:27017 -t本地主机:9200 -d elastic2_doc_manager

答案 4 :(得分:-1)

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选项。

     

我会将此添加到维基。

相关问题