當前有兩個服務器,ip分別為192.168.171.81
和192.168.171.25
,我們需要搭建一個es集群。
首先下載elasticsearch-8.2.0-linux-x86_64.tar.gz
,分別拷貝到這兩台服務器中,進行解壓。
需要注意的是,我們要在啟動Elasticsearch服務之前,就需要配置elasticsearch.yml
。
在第一台服務器修改config/elasticsearch.yml
,內容如下:
network.host: 192.168.171.81
transport.host: 192.168.171.81
cluster.name: my_cluster # 可以不寫,默認為elasticsearch
node.name: node1 # 可以不寫,默認為當前服務器名
# node.roles: [ data, master ] # 可以不寫, 默認為cdfhilmrstw
角色列表如下:
然後修改文件config/jvm.options
,內容如下:
-Xms4g
-Xmx4g
啟動第一台服務器的es:./bin/elasticsearch
出現下面,說明啟動成功:
默認密碼有點難記,我們修改密碼:./bin/elasticsearch/bin/elasticsearch-reset-password -u elastic -i
驗證是否成功:curl --insecure -u elastic:123456 -XGET "https://192.168.171.81:9200/"
,其中123456
是我剛才設置的密碼,返回如下:
說明節點正常啟動了。
然後檢查一下集群節點:curl --insecure -u elastic:123456 -XGET "https://192.168.171.81:9200/_cat/nodes"
可以看到當前只有一個節點。
當前elasticsearch.yml
文件自動進行了更新:
如果要一台新的服務器加入進來,需要生成一個token,有了這個token就可以讓一台新節點自動加入到集群,./bin/elasticsearch-create-enrollment-token -s node
接下來配置第二台服務器。 更第一台配置一樣,修改./config/elasticsearch.yml
network.host: 192.168.171.25
transport.host: 192.168.171.25
cluster.name: my_cluster
node.name: node2
node.roles: [ data, master ] # 可以不寫, 默認為cdfhilmrstw
修改config/jvm.options
:
-Xms4g
-Xmx4g
然後在講這台節點加入es集群中:./bin/elasticsearch --enrollment-token eyJ2ZXIiOiI4LjIuMCIsImFkciI6WyIxOTIuMTY4LjE3MS44MTo5MjAwIl0sImZnciI6Ijk5MGI4NDllNGVkNDk0NmEwYzAzZDdkZDk4YzQwMTg0MzllNGQ5M2E0NDExNjM5MTAxY2QwOTdkZGEzNmI5NTkiLCJrZXkiOiI0dVVjQUlFQktyU0dWdy1YSXlfVTpLYjBWaW1zZ1FkZTdxQ3dHamZJYUNnIn0=
然後在第一台節點終端顯示:
檢查node2的狀態:curl --insecure -u elastic:123456 -XGET "https:/192.168.171.25:9200/"
可以看到node2也成功啟動了。
查看node2的配置文件elasticsearch.yml
:
說明使用enrollment-token
可以自動進行配置。下次就不需要了。
檢查集群節點:
可以看見集群裡有兩個節點。
安裝 pip install elasticsearch
檢查版本:pip list | grep elasticsearch
elasticsearch 8.2.0
將es節點中的config/cert/http_ca.crt
拷貝到本地。
from elasticsearch import Elasticsearch
es = Elasticsearch('https://elastic:[email protected]:9200',
ca_certs = './http_ca.crt',
verify_certs=True)
data = {
"name": "滅絕師太",
"age": "49",
"sex": "f",
"address": "峨眉山",
"sect": "峨眉派",
"skill": "倚天劍",
"power": "70",
"create_time": "2022-05-08 23:16:53",
"modify_time": "2022-05-08 23:16:59"
}
resp = es.index(index="example_index", id=1, body=data)
print(resp)
返回添加數據成功即可。