Elasticsearch是一个开源全文搜索和分析引擎。它支持RESTful操作,并且允许你存储,搜索,并且实时分析大量的数据。Elasticsearch是最流行的搜索引擎之一,可为具有复杂搜索要求的应用程序提供动力,例如大型电子商务商店和分析应用程序。写个教程记录下如何在CentOS8系统上安装Elasticsearch,同时也给需要同学提供一丢丢帮助。

安装Java
Elasticsearch是一个Java应用,因此,第一步就是安装Java
yum install java-11-openjdk-devel
验证 Java 是否安装成功

安装 Elasticsearch
Elasticsearch在标准的CentOS 8源中不可用。我们将会从Elasticsearch RPM源中安装它。
1、使用rpm命令导入源的GPG
rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
2、使用vi命令打开文本编辑器,并且在/etc/yum.repos.d目录下创建源文件
vi /etc/yum.repos.d/elasticsearch.repo
粘贴下面的内容到文件中
[elasticsearch-7.x] name=Elasticsearch repository for 7.x packages baseurl=https://artifacts.elastic.co/packages/7.x/yum gpgcheck=1 gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch enabled=1 autorefresh=1 type=rpm-md
3、粘贴完成后,按键盘的ESC 然后输入:wq保存文件
4、安装Elasticsearch软件包
yum install elasticsearch -y
5、启用elasticsearch服务
systemctl enable elasticsearch.service --now
6、验证Elasticsearch是否运行,使用curl命令发送一个HTTP请求到本地的port 9200
curl -X GET "localhost:9200/"
如果你看到 curl: (7) Failed connect to localhost:9200; Connection refused,请稍等几秒钟,并且重试
输出类似如下图

配置 Elasticsearch
Elasticsearch数据存储在/var/lib/elasticsearch目录,配置文件在/etc/elasticsearch。
默认情况下,Elasticsearch被配置文件仅仅监听localhost。 如果客户端连接的数据库在同一个主机上,并且单节点集群,则不需要修改默认的配置文件
配置 Elasticsearch远程访问
开箱即用的Elasticsearch,没有实现鉴权,因此它可以被任何人通过HTTP API进行访问。如果你允许远程访问你的Elasticsearch服务器,你需要配置你的防火墙,并且仅仅允许从受信任的客户端通过9200端口访问Elasticsearch
例如,仅仅允许从192.168.80.80来的访问,输入下面的命令:
1、运行下面的命令,允许从远程受信任的 IP 地址访问 9200端口
firewall-cmd --new-zone=elasticsearch --permanent firewall-cmd --reload firewall-cmd --zone=elasticsearch --add-source=192.168.80.80/32 --permanent firewall-cmd --zone=elasticsearch --add-port=9200/tcp --permanent firewall-cmd --reload
不要忘记将`192.168.80.80`修改成你的远程 IP 地址。
如果你想允许从其他IP 地址访问,使用
<IP_ADDRESS>为要授权的IP地址
firewall-cmd --zone=elasticsearch --add-source=<IP_ADDRESS> --permanent firewall-cmd --reload
2、修改Elasticsearch的配置文件,并且允许Elasticsearch监听外部连接
vi /etc/elasticsearch/elasticsearch.yml
搜索包含network.host,去掉注释,并且修改为
network.host: 0.0.0.0
搜索包含http.port,去掉注释,并且修改为
http.port: 9200
搜索包含cluster.initial_master_nodes: ["node-1", "node-2"],去掉注释,并且修改为
cluster.initial_master_nodes: ["node-1"]
3、重启 Elasticsearch 服务
systemctl restart elasticsearch

