Elasticsearch 是一個非常強大的搜尋引擎。它目前被廣泛地使用於各個IT公司。Elasticsearch 是由 Elastic 公司建立並開源維護的。它的開原始碼位於github上。同時,Elastic 公司也擁有 Logstash 及 Kibana 開源專案。這個三個開源專案組合在一起,就形成了 ELK 軟體棧。它們三個共同形成了一個強大的生態圈。
我們一步一步地來在Mac OS上安裝Elasticsearch和Kibana。
一、檢查brew命令如果需要確認你的本地是否有安裝Homebrew的話,請在terminal裡面執行如下命令:
which brew
執行輸出如下:
rickie@~ % which brew
/usr/local/bin/brew
如果你有安裝brew的話,它會告訴你brew的執行路徑。否則它會告訴你找不到brew命令。如果沒有brew命令的話,你可以嘗試安裝Homebrew,具體細節參考《Java程式設計師的macOS手冊》技術專欄。
二、安裝Elasticsearch下面,告訴brew你要新增elasticsearch的tap,最後開始安裝elasticsearch。
注意,你執行以下命令的當前路徑無所謂,因為brew會把elasticsearch裝到一個預設的路徑。
告訴brew你要新增elastic的安裝源:
brew tap elastic/tap
開始安裝elasticsearch:
brew install elastic/tap/elasticsearch-full
安裝完後,上面的截圖顯示把elasticsearch安裝到了哪裡。 上面的例子中,資料被存放至/usr/local/var/lib/elasticsearch/elasticsearch_rickie/目錄中。
Elasticsearch產生的日誌會被放至 /usr/local/var/log/elasticsearch/elasticsearch_rickie.log 檔案中。
Elasticsearch用的外掛在/usr/local/var/elasticsearch/plugins/ 目錄中。
Elasticsearch的配置檔案會被放在/usr/local/etc/elasticsearch/ 目錄中。
獲取更多Elasticsearch設計細節、入門例項、原理剖析和演示專案原始碼,可訪問Elasticsearch 7.x 技術專欄。技術專欄從實戰出發,透過理論講解-環境搭建-專案案例實戰,讓初學者快速掌握Elastic技術棧。
三、修改Elasticsearch配置檔案下面透過finder找到Elasticsearch配置檔案,根據需要修改配置檔案中的引數。
修改elasticsearch.yml 配置檔案,其中修改了2個配置項cluster.name和node.name,如圖所示。
然後修改 jvm.options 配置檔案,如圖所示,修改其中的Xms和Xmx引數。
四、啟動Elasticsearch服務根據上圖中的提示資訊,啟動Elasticsearch服務。
To have launchd start elastic/tap/elasticsearch-full now and restart at login:
brew services start elastic/tap/elasticsearch-full
Or, if you don't want/need a background service you can just run:
elasticsearch
下面,我們透過如下命令啟動Elasticsearch服務:
brew services start elastic/tap/elasticsearch-full
執行結果如下所示。
顯示有錯誤。那麼,我們先停止Elasticsearch服務,分析一下原因。
brew services stop elasticsearch-full
執行命令,停止Elasticsearch服務。
rickie@~ % brew services stop elasticsearch-full
Stopping `elasticsearch-full`... (might take a while)
==> Successfully stopped `elasticsearch-full` (label: homebrew.mxcl.elasticsearch-full)
rickie@~ % brew services
Name Status User Plist
elasticsearch-full stopped
kafka stopped
mysql stopped
zookeeper stopped
詳細異常資訊如下所示:
java.lang.IllegalStateException: failed to obtain node locks, tried [[/usr/local/var/lib/elasticsearch]] with lock id [0]; maybe these locations are not writable or multiple nodes were started without increasing [node.max_local_storage_nodes] (was [1])?
at org.elasticsearch.env.NodeEnvironment.<init>(NodeEnvironment.java:302)
at org.elasticsearch.node.Node.<init>(Node.java:362)
at org.elasticsearch.node.Node.<init>(Node.java:289)
at org.elasticsearch.bootstrap.Bootstrap$5.<init>(Bootstrap.java:227)
at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:227)
at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:393)
at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:170)
at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:161)
at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:86)
at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:127)
at org.elasticsearch.cli.Command.main(Command.java:90)
at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:126)
at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:92)
For complete error details, refer to the log at /usr/local/var/log/elasticsearch/elasticsearch.log
上述異常可以簡單理解為:獲取節點鎖失敗。解決思路如下:
查詢 elasticsearch 程序:
ps aux | grep elastic
kill掉 elasticsearch 程序:
kill -9 程序號
重新啟動es:
./bin/elasticsearch
但是,如果沒有發現 elasticsearch 程序,則可能是其他原因造成的。
重新啟動Elasticsearch服務,檢視elasticsearch程序:
ps -ef | grep elasticsearch
現在可以訪問本機的9200埠,http://localhost:9200 檢查Elasticsearch服務是否工作正常。
如圖所示,顯示Elasticsearch 服務正常。
如果覺得每次啟動Elasticsearch 服務,都需要執行 elasticsearch 命令比較麻煩,可以執行如下命令:
brew services start elasticsearch-full
這樣就可以啟動elasticsearch 後臺服務了。