環境準備
- JDK 1.8 以上
- ElasticSearch 7.0 以上
ElasticSearch 安裝包下載地址:https://www.elastic.co/cn/downloads/elasticsearch
ElasticSearch 單機安裝
ElasticSearch 安裝包下載完成後,進行解壓,然後在進入文件夾,找到 bin
目錄下 elasticsearch.bat
文件,雙擊啓動。
啓動完成後,在瀏覽器中訪問 http://localhost:9200/
地址,出現下面的內容,則表示成功。
配置 ElasticSearch Head
ElasticSearch Head 是 ElasticSearch 的一個可視化界面工具。
下載與配置詳情見 Gituhb 地址:https://github.com/mobz/elasticsearch-head
這裏我推薦 Running as a Chrome extension
,配置比較方便且不用下載壓縮包。
注意,因爲 ElasticSearch Head 和 ElasticSearch 是兩個獨立的工具,它們之間的訪問是有跨域問題的,所以不管使用哪種方式配置 ElasticSearch Head,都要在 ElasticSearch 配置文件 elasticsearch.yml
末尾添加如下代碼,以解決跨域問題:
http.cors.enabled: true
http.cors.allow-origin: "*"
可以放開 cluster.name
,node.name
,http.port
的註釋,自定義 ElasticSearch 信息,保存後重啓 ElasticSearch。
最後,打開 ElasticSearch Head,連接 ElasticSearch,如圖:
ElasticSearch 分佈式安裝
首先,將 ElasticSearch 解壓後的文件複製兩份,並且確保兩份文件是完全乾淨的,沒有做過任何更改。不然,搭建完成後,會出現莫名的異常。
主節點配置
選擇一個 ElasticSearch 文件作爲主節點(Master),打開配置文件 elasticsearch.yml
,做如下更改。
# 集羣名字
cluster.name: es
# 節點名稱
node.name: master
node.master: true
# 網絡綁定
network.host: 127.0.0.1
# 設置對外服務的http端口,默認爲9200
http.port: 9200
# 手動指定可以成爲 mater 的所有節點的 name 或者 ip
cluster.initial_master_nodes: ["127.0.0.1"]
# 跨域
http.cors.enabled: true
http.cors.allow-origin: "*"
保存配置文件,並啓動主節點。
從節點配置
將剩下的兩個文件作爲 ElasticSearch 集羣的從節點(Slave),我這裏分別命名爲 node-1 和 node-2。
從節點的配置基本相同,只是節點名稱和端口需要修改。這裏以 node-1
的配置爲例,打開配置文件 elasticsearch.yml
,做如下更改。
# 集羣名稱,處於同一個集羣所有節點,該名稱必須相同
cluster.name: es
# 節點名稱
node.name: node-1
# 是否可以成爲master節點
node.master: false
# 是否允許該節點存儲數據,默認開啓
node.data: true
# 網絡綁定,這裏我綁定 0.0.0.0,支持外網訪問
network.host: 127.0.0.1
http.port: 8200
# 支持跨域訪問
http.cors.enabled: true
http.cors.allow-origin: "*"
# 集羣發現,指定 master 節點的 ip 地址
discovery.seed_hosts: ["127.0.0.1"]
配置完成後,啓動各節點,使用 ElasticSearch Head 工具查看集羣信息,出現如圖內容,說明集羣搭建成功。
最後
之前查閱 ElasticSearch 集羣搭建的相關文章的時候,有些文章提到了這個配置:
discovery.zen.ping.unicast.hosts: ["127.0.0.1"]
但是這裏沒有使用,後面我通過查閱 ES 7.0.0 的官方文檔: https://www.elastic.co/guide/en/elasticsearch/reference/current/discovery-settings.html
文檔內容如下:
意思是,集羣發現(Discovery)有關的配置主要使用 discovery.seed_hosts
和 cluster.initial_master_nodes
完成。
像 discovery.zen.ping.unicast.hosts
可能是 ElaticSearch 低版本中使用。
參考
ElaticSearch 官方文檔:https://www.elastic.co/guide/en/elasticsearch/reference/current/setup.html
ElaticSearch 集羣搭建及參數詳解: https://www.jianshu.com/p/149a8da90bbc