由於公司業務需要,要用elasticsearch做索引庫實現搜索功能,歷盡千辛萬苦,最后總算把mongodb和elasticsearch集成成功
1.搭建mongodb集群 參考https://www.cnblogs.com/visionwang/p/3290435.html
這篇文章用的是參數的形式啟動服務,而我是用配置文件的形式啟動
啟動服務
./mongod -f master.cfg --fork
./mongod -f admin.cfg --fork
./mongod -f sand.cfg --fork
./mongod -f sand1.cfg --fork
2這里需要用到兩個python的插件mongo-connector和elastic2-doc-manage需要用pip安裝,故而需要安裝python,安裝的時候注意,下載帶pip的python版本
安裝python的教程在這就不多說了,我的系統是自帶的有python但是版本有點老沒有pip,很尷尬
安裝或升級pip參考 https://www.cnblogs.com/technologylife/p/5870576.html
pip安裝好之后安裝插件
pip install mongo-connector
pip install elastic2-doc-manager[elastic5]
3以上步驟都完成好之后我們來安裝elasticsearch
在這里有一個最大的坑,下載elasticsearch不要下載5.0之后的版本,因為5.0之后的版本在做數據轉儲的時候要加請求頭,
而目前版本的mongo-connector好像還不能兼容,這問題折騰了我兩天,搜天搜地把報錯日志各種搜最后找到了線索,最后下了個5.0的
下載地址 https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.0.0.tar.gz
下載完成后解壓 tar -xvf elasticsearch-5.0.0.tar.gz
改名 mv elasticsearch-5.0.0.tar.gz elasticsearch
由於elasticsearch不能已root用戶啟動所以我們等會要切換角色並把elasticsearch目錄的權限修改
chmod -R 777 elasticsearch
創建用戶 adduser sand
創建密碼 passwd sand
進入elasticsearch
為了讓elasticsearch能夠通過別的機器訪問需要進入elasticsearch/config/下修改elasticsearch.yml
把network改成0.0.0.0去掉注釋
好現在我們啟動elasticsearch
切換用戶sudo -su sand
進入bin目錄
啟動服務 ./elasticsearch
通過瀏覽器訪問 http://ip:9200
9200是elasticsearch默認端口號如果返回如下說明elasticsearch啟動成功
{ "name" : "8xSyVHK", "cluster_name" : "elasticsearch", "cluster_uuid" : "I1zeFnR1QyOtYvEV-d03TA", "version" : { "number" : "5.0.0", "build_hash" : "253032b", "build_date" : "2016-10-26T04:37:51.531Z", "build_snapshot" : false, "lucene_version" : "6.2.0" }, "tagline" : "You Know, for Search" }
最后我們使用mongo-connect把mongodb和elasticsearch整合在一起
mongo-connector -m localhost:8092 -t localhost:9200 -d elastic2_doc_manager -n admin.members
-m mongodb的地址(這里需要注意此服務端口一定要是primary,也就是mongodb集群中的主節點)
-t 是elasticsearch的地址
-d 是用哪個插件
admin.members是用哪個庫的哪個集合
[root@localhost /]# mongo-connector -m localhost:8092 -t localhost:9200 -d elastic2_doc_manager -n admin.members
Logging to /mongo-connector.log.
去看這個日志,如下是正確的啟動信息
2018-09-06 22:02:23,803 [ALWAYS] mongo_connector.connector:51 - Starting mongo-connector version: 2.5.1
2018-09-06 22:02:23,803 [ALWAYS] mongo_connector.connector:51 - Python version: 2.7.5 (default, Jul 13 2018, 13:06:57)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-28)]
2018-09-06 22:02:23,803 [ALWAYS] mongo_connector.connector:51 - Platform: Linux-3.10.0-862.11.6.el7.x86_64-x86_64-with-centos-7.5.1804-Core
2018-09-06 22:02:23,803 [ALWAYS] mongo_connector.connector:51 - pymongo version: 3.7.1
2018-09-06 22:02:23,809 [ALWAYS] mongo_connector.connector:51 - Source MongoDB version: 4.0.1
2018-09-06 22:02:23,809 [ALWAYS] mongo_connector.connector:51 - Target DocManager: mongo_connector.doc_managers.elastic2_doc_manager version: 0.3.0