白小丸
2019-03-20 11:37
采纳率: 87.5%
浏览 1.3k

用mongo-connector同步mongodb和elasticsearch遇到的几个问题

我希望把mongodb中存储的数据同步到elasticsearch,以便后续实现检索功能。系统是windows10,各种工具和环境都搭建好了,mongodb的副本集也已建立,elasticsearch版本是6.X,同步工具选择的是mongo-connector,同步命令如下:

mongo-connector --auto-commit-interval=0 -m localhost:27017 -t localhost:9200 -d elastic2_doc_manager -o mongodb_oplog_position.oplog

但是在数据同步过程中遇到了几个问题:
1.
failed to parse field [xx] of type [long]
出错的数据是一个32位的MD5值,在mongodb中的数据类型是String,是因为长度太长了所以出这个错误吗,该怎么解决呢?

2.
Rejecting mapping update to [db] as the final mapping would have more than 1 type: [t1, t2]
提示一个index中不能有多个type,查了一下,发现是elasticsearch 6.X版本以后的新规范,但是mongodb通常会一个DB中有多个Collection,这个该怎么同步呢?

请各位大佬帮忙解答一下。

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • 哈喽大海豚 2019-03-20 12:19
    已采纳

    1.第一个问题
    32位MD5的值,每一个都是16进制数,而java中long是十进制的数,所以只要你的字符串中带有十六进制的字母abcdef,就会报错,推荐你在传输之前,解密一下,再存储,或者指定es字段类型为string
    2.第二个问题
    ES中某个资源的定位是这样的形式的
    host:port/index/type/id
    ES6之后,只能有一个type,以后可能移除这个,所以现在如果是多个type的话,可以把index和type名拼接。
    host:port/index_type/xxx/id这样的形式

    已采纳该答案
    打赏 评论

相关推荐 更多相似问题