本文主要讲述 Windows 环境下的 ElasticSearch 的单例安装和分布式安装。
环境准备
- 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
末尾添加如下代码,以解决跨域问题:
1 | http.cors.enabled: true |
2 | http.cors.allow-origin: "*" |
可以放开 cluster.name
,node.name
,http.port
的注释,自定义 ElasticSearch 信息,保存后重启 ElasticSearch。
最后,打开 ElasticSearch Head,连接 ElasticSearch,如图:
ElasticSearch 分布式安装
首先,将 ElasticSearch 解压后的文件复制两份,并且确保两份文件是完全干净的,没有做过任何更改。不然,搭建完成后,会出现莫名的异常。
主节点配置
选择一个 ElasticSearch 文件作为主节点(Master),打开配置文件 elasticsearch.yml
,做如下更改。
1 | # 集群名字 |
2 | cluster.name: es |
3 | # 节点名称 |
4 | node.name: master |
5 | node.master: true |
6 | # 网络绑定 |
7 | network.host: 127.0.0.1 |
8 | # 设置对外服务的http端口,默认为9200 |
9 | http.port: 9200 |
10 | |
11 | # 手动指定可以成为 mater 的所有节点的 name 或者 ip |
12 | cluster.initial_master_nodes: ["127.0.0.1"] |
13 | |
14 | # 跨域 |
15 | http.cors.enabled: true |
16 | http.cors.allow-origin: "*" |
保存配置文件,并启动主节点。
从节点配置
将剩下的两个文件作为 ElasticSearch 集群的从节点(Slave),我这里分别命名为 node-1 和 node-2。
从节点的配置基本相同,只是节点名称和端口需要修改。这里以 node-1
的配置为例,打开配置文件 elasticsearch.yml
,做如下更改。
1 | # 集群名称,处于同一个集群所有节点,该名称必须相同 |
2 | cluster.name: es |
3 | |
4 | # 节点名称 |
5 | node.name: node-1 |
6 | # 是否可以成为master节点 |
7 | node.master: false |
8 | # 是否允许该节点存储数据,默认开启 |
9 | node.data: true |
10 | |
11 | # 网络绑定,这里我绑定 0.0.0.0,支持外网访问 |
12 | network.host: 127.0.0.1 |
13 | http.port: 8200 |
14 | |
15 | # 支持跨域访问 |
16 | http.cors.enabled: true |
17 | http.cors.allow-origin: "*" |
18 | |
19 | # 集群发现,指定 master 节点的 ip 地址 |
20 | discovery.seed_hosts: ["127.0.0.1"] |
配置完成后,启动各节点,使用 ElasticSearch Head 工具查看集群信息,出现如图内容,说明集群搭建成功。
最后
之前查阅 ElasticSearch 集群搭建的相关文章的时候,有些文章提到了这个配置:
1 | 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 低版本中使用。