准备工作

下载 Elasticsearch 的 Windows 版本:Download

(Linux 上搭建同理,主要就是修改配置文件)

这里使用的是 ES7 的版本

解压以后直接复制三份,文件结构

注意:如果是之前使用过的的 ES,复制的时候不要复制 data文件夹

修改

config 目录下的 jvm.options文件,修改 es 启动时占用内存大小

1
2
-Xms512m
-Xmx512m

config 目录下的 elasticsearch.yml文件,配置跨域(已经配置过可以忽略)和集群设置

注意:Windows 下编辑的时候编码为 UTF-8 编码,不然启动会报错!

节点一【node-1】配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#跨域配置
http.cors.enabled: true
http.cors.allow-origin: "*"

#集群名称,保证唯一
cluster.name: my-elasticsearch
#节点名称,必须不一样
node.name: node-1
#是不是有资格竞选主节点
node.master: true
#是否存储数据
node.data: true
#服务端口号,在同一机器下必须不一样
http.port: 9201
#集群间通信端口号,在同一机器下必须不一样
transport.tcp.port: 9301
#es7.x 之后新增的配置,写入候选主节点的设备地址,在开启服务后可以被选为主节点
discovery.seed_hosts: ["127.0.0.1:9301","127.0.0.1:9302","127.0.0.1:9303"]
#es7.x 之后新增的配置,初始化一个新的集群时需要此配置来选举master
cluster.initial_master_nodes: ["node-1","node-2","node-3"]

节点二【node-2】配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#跨域配置
http.cors.enabled: true
http.cors.allow-origin: "*"

#集群名称,保证唯一
cluster.name: my-elasticsearch
#节点名称,必须不一样
node.name: node-2
#是不是有资格竞选主节点
node.master: true
#是否存储数据
node.data: true
#服务端口号,在同一机器下必须不一样
http.port: 9202
#集群间通信端口号,在同一机器下必须不一样
transport.tcp.port: 9302
#es7.x 之后新增的配置,写入候选主节点的设备地址,在开启服务后可以被选为主节点
discovery.seed_hosts: ["127.0.0.1:9301","127.0.0.1:9302","127.0.0.1:9303"]
#es7.x 之后新增的配置,初始化一个新的集群时需要此配置来选举master
cluster.initial_master_nodes: ["node-1","node-2","node-3"]

节点三【node-3】配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#跨域配置
http.cors.enabled: true
http.cors.allow-origin: "*"

#集群名称,保证唯一
cluster.name: my-elasticsearch
#节点名称,必须不一样
node.name: node-3
#是不是有资格竞选主节点
node.master: true
#是否存储数据
node.data: true
#服务端口号,在同一机器下必须不一样
http.port: 9203
#集群间通信端口号,在同一机器下必须不一样
transport.tcp.port: 9303
#es7.x 之后新增的配置,写入候选主节点的设备地址,在开启服务后可以被选为主节点
discovery.seed_hosts: ["127.0.0.1:9301","127.0.0.1:9302","127.0.0.1:9303"]
#es7.x 之后新增的配置,初始化一个新的集群时需要此配置来选举master
cluster.initial_master_nodes: ["node-1","node-2","node-3"]

启动

配置完成之后,配置的默认第一个节点为主节点,即node-1,优先启动 node-1 节点,之后再启动 node-2 和 node-3(但是我实测启动先后没有影响)

三个都启动完成以后测试是否可以正常访问

http://localhost:9201/

http://localhost:9202/

http://localhost:9203/

之后启动elasticsearch-head-5.0.0插件

1
grunt server

网页访问 http://localhost:9100/

连接不管是 9201、9202 还是 9203,都是 node-1 为主节点

之后就可以在项目连接 ES 时直接配置 ES 集群的地址,配置一个即可