docker run -di --name=tensquare_es -p 9200: -p 9300:9300 elasticsearch:5.6.8
創建elasticsearch容器(如果版本不是最新的需要在后面加上版本號)
直接瀏覽器訪問創建對應的索引庫(這里使用postman)
search模塊對應application.yml文件設置
添加之后9200可用,9300不可用,下面讓虛擬機上面的9300端口可用
docker exec -it tensquare_es /bin/bash
將里面的elasticsearch.yml文件復制到容器外面的/usr/share文件夾下(復制的時候注意需要啟動容器)
docker cp tensquare_es:/usr/share/elasticsearch/config/elasticsearch.yml /usr/share/elasticsearch.yml
刪除之前的容器,創建新的容器
docker rm tensquare_es docker run -di --name=tensquare_es -p 9200:9200 -p9300:9300 -v /usr/share/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml elasticsearch:5.6.8
后面帶有顏色的表示,不使用冒號后面容器中的配置文件,使用前面指定的文件,這樣做好像因為容器相當於一台電腦,但是里面沒有vi編輯器,不能直接修改
修改復制好的elasticsearch.yml文件,刪除transport.host: 0.0.0.0所在行的注釋(去掉最前面的#),表示允許所有的主機訪問,
同樣的文件中 添加對應的跨域修改內容,之后重啟docker,容器可以使用,添加下面的內容是為了后面的header的使用
http.cors.enabled: true
http.cors.allow.origin: "*"
修改后的elasticsearch.yml文件內容
同時需要放開更多的資源(docker的要求,因為這時候允許所有IP都可以訪問了,所以需要更多的資源),否則容器啟動不久就會掛掉,
解決辦法,修改/etc/security/limits.conf在文件里追加下面內容(可以一上來就修改這個文件)
* soft nofile 65536
* hard nofile 65536
nofile 單個進程允許打開的最大文件個數 soft是軟限制,hard是硬限制
修改后
在/etc/sysctl.conf文件中追加
vm.max_map_count=655360
表示限制一個進程最大能擁有虛擬內存的數量。
修改后
到現在為止,可以使用進行英文的分詞
ik分詞器插件的安裝
直接將分詞器目錄拷貝到 容器所在目錄的/bin/bash/plugins
Alt+p打開SecureCRT的傳輸界面,使用下面命令傳輸ik文件夾
sftp> put ‐r d:\setup\ik
z在ik所在的文件夾下,拷貝到上面所說的插件目錄
docker cp ik tensquare_es:/usr/share/elasticsearch/plugins
重啟tensquare_es,測試,可以實現中文的分詞,否則只能實現英文的分詞
header 安裝(方便管理elasticsearch)
docker run -di --name=tensquare_header -p 9100:9100 mobz/elasticsearch-head:5
注意跨域的問題
瀏覽器訪問相應的端口號,連接對應端口的elasticsearch
上面的索引庫是之前使用postman訪問的時候就創建的創建的。
elasticsearch注意事項,
使用Java開發的時候使用9300接口,其他的使用9200端口