利用mongo-connector进行elasticsearch安装及同步mongodb数据遇到的问题解决
一、elasticsearch安装
官网下载https://www.elastic.co/downloads/past-releases/elasticsearch-5-6-6
注:尽量不要下载6.x,否则会出现数据无法同步,更新数据库数据elasticsearch无响应,可能是目前6.1.2版本不支持或者我自己有些地方做的不对。
二、elasticsearch同步mongdb数据
同步数据过程参考http://blog.csdn.net/shiyaru1314/article/details/52468436
三、遇到的问题解决
1. 使用mongo-connector的原因
有的教程使用的是_river,这种方法支持elasticsearch1.x,2.x,之后的版本应该就不支持了(参考资料找不见了...)
2. rs.initiate()初始化时,”ok”=0;
这个地方需要配置config
> config={_id:"rs0",members:[{_id:0,host:"127.0.0.1:27017"}]}
> rs.initiate(config)
3. 连接mongodb和elasticsearch异常关闭
也就是这一步:mongo-connector --auto-commit-interval=0 -m 127.0.0.1:27017 -t 127.0.0.1:9200 -d elastic_doc_manager
检查mongo-connector.log发现问题如下:
2018-01-22 15:40:59,299 [ALWAYS] mongo_connector.connector:51 - Starting mongo-connector version: 2.5.1
2018-01-22 15:40:59,299 [ALWAYS] mongo_connector.connector:51 - Python version: 3.5.2 (v3.5.2:4def2a2901a5, Jun 25 2016, 22:18:55) [MSC v.1900 64 bit (AMD64)]
2018-01-22 15:40:59,300 [ALWAYS] mongo_connector.connector:51 - Platform: Windows-10-10.0.15063-SP0
2018-01-22 15:40:59,301 [ALWAYS] mongo_connector.connector:51 - pymongo version: 3.6.0
2018-01-22 15:40:59,320 [ALWAYS] mongo_connector.connector:51 - Source MongoDB version: 3.6.0
2018-01-22 15:40:59,320 [ALWAYS] mongo_connector.connector:51 - Target DocManager: mongo_connector.doc_managers.elastic_doc_manager version: 0.3.0
2018-01-22 15:40:59,377 [ERROR] mongo_connector.oplog_manager:202 - OplogThread: Last entry no longer in oplog cannot recover! Collection(Database(MongoClient(host=['127.0.0.1:27017'], document_class=dict, tz_aware=False, connect=True, replicaset='rs0'), 'local'), 'oplog.rs')
2018-01-22 15:41:00,377 [ERROR] mongo_connector.connector:398 - MongoConnector: OplogThread <OplogThread(Thread-3, stopped 15956)> unexpectedly stopped! Shutting downShut
解决办法:
删除python安装目录(或.log的根目录)下的oplog.timestamp,重新连接即可。
已经连接上,但是更新数据库(增删改查等),elasticsearch并无响应,也就是没有建立相应的索引
如果前面都正常,只是这一步,那很有可能是elasticsearch版本太新,安装5.x即可解决。
4. elasticsearch匹配的最小单元必须是一个词条?不支持部分匹配?
可以进行模糊匹配等,通过?,*,或者正则匹配等方式
具体请参考https://www.cnblogs.com/huanxiyun/articles/5890897.html
5.如果需要中文可以安装analysis-ik(下载合适的版本,不然会报错,版本不匹配incompatible)
./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v5.5.1/elasticsearch-analysis-ik-5.5.1.zip很多不完善,欢迎交流。
参考资料:http://blog.csdn.net/shiyaru1314/article/details/52468436
http://www.ruanyifeng.com/blog/2017/08/elasticsearch.html
https://www.cnblogs.com/huanxiyun/articles/5890897.html