【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,为开发和测试提供便利。

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

相关推荐
喝醉酒的小白14 小时前
Elasticsearch的索引生命周期管理
大数据·elasticsearch·jenkins
是理不是里_15 小时前
Elasticsearch有哪些应用场景?
大数据·elasticsearch·搜索引擎
forestsea16 小时前
【Elasticsearch】内置分词器和IK分词器
大数据·elasticsearch·搜索引擎
risc12345621 小时前
【Elasticsearch】 索引模板 ignore_missing_component_templates
大数据·elasticsearch·jenkins
幸好我会魔法1 天前
人格分裂(交互问答)-小白想懂Elasticsearch
大数据·spring boot·后端·elasticsearch·搜索引擎·全文检索
顧棟1 天前
【ES实战】治理项之索引模板相关治理
大数据·elasticsearch·yarn
risc1234562 天前
【Elasticsearch】index:false
elasticsearch
forestsea2 天前
【Elasticsearch】聚合分析:管道聚合
大数据·elasticsearch·搜索引擎
risc1234562 天前
【Elasticsearch】脚本查询需要字段时使用的docValues结构吗?
elasticsearch