【Elasticsearch 基础入门】Centos7下Elasticsearch 7.x安装与配置(单机)

Elasticsearch系列文章目录

  1. 【Elasticsearch 基础入门】一文带你了解Elasticsearch!!!
  2. 【Elasticsearch 基础入门】Centos7下Elasticsearch 7.x安装与配置(单机)

目录


前言

要理解 Elasticsearch,最好的方式就是去运行它,让我们开始吧!!!

我们将介绍如何在 CentOS 7 上安装和配置 Elasticsearch 7.17供开发和测试使用的单机模式。

单机模式

1. 安装 Java 依赖

Elasticsearch 是用 Java 编写的,因此需要 Java 环境。首先安装 JDK(版本 8 或更高版本)。

具体安装过程略

查看当前安装的java 版本

bash 复制代码
java -version

返回信息如下

bash 复制代码
java version "1.8.0_411"
Java(TM) SE Runtime Environment (build 1.8.0_411-b09)
Java HotSpot(TM) 64-Bit Server VM (build 25.411-b09, mixed mode)

2. 下载 Elasticsearch

前往 Elasticsearch 官网 下载最新版本的 Elasticsearch。

选择适合你系统的版本(Linux、Windows 等)。

下载并解压到合适的目录。例如,在 CentOS 上:

bash 复制代码
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.17.27-linux-x86_64.tar.gz
tar -xzf elasticsearch-7.17.27-linux-x86_64.tar.gz
cd elasticsearch-7.17.27/ 

3. 配置 Elasticsearch

对于单机模式,你可以稍微修改一下 elasticsearch.yml 配置文件,来指定网络地址和集群名称。

配置文件路径:config/elasticsearch.yml

bash 复制代码
vim config/elasticsearch.yml

修改以下项:

bash 复制代码
network.host: 0.0.0.0  # 默认是 127.0.0.1,只允许本地连接,如果希望 Elasticsearch 可供其他机器访问,可以改为 0.0.0.0 或者具体的 IP 地址,允许远程访问
cluster.name: my-cluster  # 集群的名字,默认为 elasticsearch。可以根据需要修改。
node.name: node-1  # 设置节点名称。默认为随机生成的名称,可以自定义。
cluster.initial_master_nodes: ["node-1"] # 在首次启动时指定初始主节点,用于集群发现。

4. 启动 Elasticsearch

启动 Elasticsearch 服务:

bash 复制代码
./bin/elasticsearch

5.启动报错 java.lang.RuntimeException: can not run elasticsearch as root

报错日志如下

bash 复制代码
[2025-01-26T08:25:59,843][ERROR][o.e.b.ElasticsearchUncaughtExceptionHandler] [node-1] uncaught exception in thread [main]
org.elasticsearch.bootstrap.StartupException: java.lang.RuntimeException: can not run elasticsearch as root
	at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:173) ~[elasticsearch-7.17.27.jar:7.17.27]
	...

解决方式

错误提示表明 Elasticsearch 不能以 root 用户身份启动。为了安全性,Elasticsearch 不允许以 root 用户运行。你需要创建一个非 root 用户来运行 Elasticsearch。

  1. 创建一个新的用户: 你可以使用以下命令创建一个非 root 用户(例如:elasticsearch):
bash 复制代码
sudo useradd elasticsearch
sudo passwd elasticsearch  # 设置密码
  1. 更改 Elasticsearch 文件夹的拥有者: 需要将 Elasticsearch 的安装目录以及数据目录的权限更改为新用户。假设你安装 Elasticsearch 的路径为 /home/elasticsearch/elasticsearch-7.17.27,请执行以下命令:
bash 复制代码
sudo chown -R elasticsearch:elasticsearch /home/elasticsearch/elasticsearch-7.17.27
sudo chown -R elasticsearch:elasticsearch /home/elasticsearch/elasticsearch-7.17.27/data
sudo chown -R elasticsearch:elasticsearch /home/elasticsearch/elasticsearch-7.17.27/logs
  1. 以新用户身份启动 Elasticsearch: 切换到新创建的 elasticsearch 用户:
bash 复制代码
su - elasticsearch
  1. 然后,尝试启动 Elasticsearch:
bash 复制代码
./bin/elasticsearch

6. 后台启动 Elasticsearch

如果启动 Elasticsearch 服务成功,可以加上-d参数来后台启动:

bash 复制代码
./bin/elasticsearch -d

7.验证是否安装成功

bash 复制代码
curl http://localhost:9200

返回信息如下表示成功

bash 复制代码
{
  "name" : "node-1",
  "cluster_name" : "my-cluster",
  "cluster_uuid" : "lQQ3Qxd5SlmYpq20mq_YGA",
  "version" : {
    "number" : "7.17.27",
    "build_flavor" : "default",
    "build_type" : "tar",
    "build_hash" : "0f88dde84795b30ca0d2c0c4796643ec5938aeb5",
    "build_date" : "2025-01-09T14:09:01.578835424Z",
    "build_snapshot" : false,
    "lucene_version" : "8.11.3",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}

浏览器访问 http://localhost:9200

8.配置防火墙(如需远程访问)

如果你打算让其他机器也能访问 Elasticsearch,记得在防火墙中打开 9200 端口:

bash 复制代码
sudo firewall-cmd --zone=public --add-port=9200/tcp --permanent
sudo firewall-cmd --reload

9.关闭elasticsearch

查看es进程

bash 复制代码
ps aux | grep elasticsearch

显示如下

bash 复制代码
elastic+ 23343  3.3 35.4 5741876 1376504 pts/0 Sl   08:44   0:23 /usr/java/jdk1.8.0-x64/bin/java  -cp /home/elasticsearch/elasticsearch-7.17.27/lib/* org.elasticsearch.bootstrap.Elasticsearch -d

10.停止后台进程

kill pid 停止 Elasticsearch

bash 复制代码
kill 23343

11.设置开机自启动

创建 systemd 服务文件

创建一个名为 elasticsearch.service 的服务文件,通常放置在 /etc/systemd/system/ 目录下。可以使用以下命令创建并编辑该文件:

bash 复制代码
sudo vim /etc/systemd/system/elasticsearch.service

在文件中添加以下内容:

bash 复制代码
[Unit]
Description=Elasticsearch
Documentation=http://www.elastic.co
After=network.target

[Service]
Type=simple
User=elasticsearch
ExecStart=/home/elasticsearch/elasticsearch-7.17.27/bin/elasticsearch
Restart=on-failure
LimitMEMLOCK=infinity
LimitNOFILE=65535
LimitNPROC=4096
TimeoutStartSec=75
TimeoutStopSec=75
WorkingDirectory=/home/elasticsearch/elasticsearch-7.17.27

[Install]
WantedBy=multi-user.target

重新加载 systemd 配置

创建完服务文件后,需要重新加载 systemd 的配置以识别新服务:

bash 复制代码
sudo systemctl daemon-reload

启动 Elasticsearch 服务

现在,你应该能够使用 systemctl 来管理 Elasticsearch 服务了。首先启动服务:

bash 复制代码
sudo systemctl start elasticsearch

启用服务开机自启动

bash 复制代码
sudo systemctl enable elasticsearch

停止 Elasticsearch 服务

bash 复制代码
sudo systemctl stop elasticsearch

查询 Elasticsearch 启动状态

bash 复制代码
sudo systemctl status elasticsearch

总结

通过本教程,你已经学习了如何在 CentOS 7 上安装和配置 Elasticsearch 7.17 版本的单机模式。我们从安装 Java 环境、下载并配置 Elasticsearch,到启动、排查常见错误、验证安装等方面进行了详细介绍。希望这篇文章能够帮助你顺利在本地环境中运行 Elasticsearch,为开发和测试提供便利。

如果你有任何疑问或遇到其他问题,欢迎在评论区留言。

相关推荐
G皮T4 小时前
【Elasticsearch】深度分页及其替代方案
大数据·elasticsearch·搜索引擎·scroll·检索·深度分页·search_after
G皮T6 小时前
【Elasticsearch】检索排序 & 分页
大数据·elasticsearch·搜索引擎·排序·分页·检索·深度分页
飞询9 小时前
Docker 安装 Elasticsearch 9
elasticsearch·docker
G皮T10 小时前
【Elasticsearch】检索高亮
大数据·elasticsearch·搜索引擎·全文检索·kibana·检索·高亮
大只鹅1 天前
解决 Spring Boot 对 Elasticsearch 字段没有小驼峰映射的问题
spring boot·后端·elasticsearch
HGW6891 天前
基于 Elasticsearch 实现地图点聚合
java·elasticsearch·高德地图
小袁拒绝摆烂2 天前
ElasticSearch快速入门-1
大数据·elasticsearch·搜索引擎
GISer_Jing2 天前
Git协作开发:feature分支、拉取最新并合并
大数据·git·elasticsearch
高山莫衣2 天前
git rebase多次触发冲突
大数据·git·elasticsearch
kobe_OKOK_2 天前
【团队开发】git 操作流程
git·elasticsearch·团队开发