elastic search安裝與本地測試
elastic search是一個全文搜索引擎
教程:
綜合:http://www.ruanyifeng.com/blog/2017/08/elasticsearch.html 強烈推薦
centos7上安裝與配置:https://www.biaodianfu.com/centos-7-install-elasticsearch.html 不全
正確安裝步驟:
root身份登陸服務器
安裝java8並配置環境變量
執行一個命令,修改內核參數,讓java能夠鎖定內存:https://www.cnblogs.com/rabbitpei/p/6738671.html
創建一個普通用戶es
以es身份重新登陸服務器
修改~/.bashrc文件,加入如下兩行:
source ~/.bashrc讓配置生效
下載elastic search,解壓,進入文件夾,執行./bin/elasticsearch,看到如下就說明啟動起來了,可以在本機測試一下:
我的安裝歷程(用的putty來遠程登陸控制服務器):
root身份登陸服務器
安裝java8並配置環境變量
下載elastic search,解壓,進入文件夾。
執行./bin/elasticsearch,報錯,檢查后發現,java不能鎖定內存:https://www.cnblogs.com/rabbitpei/p/6738671.html
解決辦法:執行命令,讓java可以鎖定內存。
執行./bin/elasticsearch,報錯,檢查后發現,奇奇怪怪的錯誤,看教程后發現,新版的elastic search不支持root啟動。
解決辦法:創建一個普通用戶es
su es,輸入密碼,繼續./bin/elasticsearch,卻發現因為此時在/root文件夾中,沒有權限,於是sudo,又被提示not in the sudoers:https://jingyan.baidu.com/article/2a1383284bb3e8074a134f2d.html
解決辦法:加入sudoers
繼續sudo執行./bin/elasticsearch,奇奇怪怪的錯誤。
解決辦法:於是,以es身份重新登錄服務器,進到了es用戶的文件夾,這下總算沒有權限問題了。
下載elastic search,解壓,進入文件夾。
執行./bin/elasticsearch,報錯,這次報錯倒是很簡短,被kill。檢查后發現,因為我的服務器只有1G內存,而我沒有設置elastic search使用的內存大小,所以elastic search采用默認值1G,故啟動elastic search時,elastic search進程試圖向操作系統申請1G的內存空間,直接導致內存不足,觸發了linux的OOM killer,OOM killer遂將剛啟動的elastic search殺死。
關於elastic search的內存申請以及OOM killer:
什么是oom killer:https://www.vpsee.com/2013/10/how-to-configure-the-linux-oom-killer/
如何防止elastic search被oom killer殺死:https://stackoverflow.com/questions/25355726/prevent-elasticsearch-from-being-killed-by-oom-killer(注意,里面的ES_HEAP_SIZE的寫法,在elastic search5.0中已經被ES_JAVA_OPTS代替!)
是不是給elastic search分的內存越大越好呢?不是!:https://www.v2ex.com/t/411036+++https://www.cnblogs.com/jiu0821/p/5650027.html (注意,里面的ES_HEAP_SIZE的寫法,在elastic search5.0中已經被ES_JAVA_OPTS代替!)
解決辦法:在環境變量/啟動命令/elastic search配置文件里設置elastic search所占內存大小:修改~/.bashrc文件,加入如下兩行:
第一行是JAVA_HOME環境變量,一定要配。
第二行就是elastic search所要申請的內存空間,200m的意思就是申請200MB的空間。如果想設的更大,例如4G,那么就這么寫:export ES_JAVA_OPTS='-Xms4g -Xmx4g'。注意,不接受小數,例如這么寫是錯的:export ES_JAVA_OPTS='-Xms0.5g -Xmx0.5g'(不應該寫成0.5g而應該寫成512m)。
修改完~/.bashrc后,保存退出,source ~/.bashrc讓其生效。
再回到elastic search解壓出的文件夾,執行./bin/elasticsearch
終於啟動成功
然后新建一個putty session,以root身份登陸,在本機測試一下(為什么要在本機測試呢?因為elastic search默認只接受本機的請求,因為elastic search沒有安全驗證機制,所以如果要暴露端口到局域網乃至公網的話,是非常危險的,我們暫時就現在本機測試好了~,相關參考:http://bbs.360.cn/thread-14813424-1-1.html+++https://elasticsearch.cn/article/129)
使用curl命令發送一個http請求到9200端口。
注意,有時,正在運行着elastic search的putty會因為超時而斷開,此時如果重新登陸,需要查看一下占用9200端口/9300端口的進程,然后殺死那個進程,然后才能重新啟動elastic search,否則端口被占用。
測試,成功!
sth.interesting:https://www.cnblogs.com/zlslch/p/6619089.html