完整教程:Linux中安装es

news/2025/10/3 11:40:57/文章来源:https://www.cnblogs.com/tlnshuju/p/19124428

完整教程:Linux中安装es

2025-10-03 11:33  tlnshuju  阅读(0)  评论(0)    收藏  举报

好的,这是一个非常详细的、分步的教程,指导您在 Linux 系统上部署 Elasticsearch 7.13.4。

部署前准备

  1. 系统要求:
    ◦ 内存:建议至少 4GB RAM,生产环境推荐 8GB 或更多。Elasticsearch 默认使用 1GB 堆内存,这对于学习测试足够,但生产需要调整。

    ◦ 磁盘空间:根据您的数据量决定,建议至少 10GB 可用空间。

    ◦ 操作系统:大多数现代 Linux 发行版(如 Ubuntu, CentOS, Red Hat 等)均可。

  2. 软件依赖:
    ◦ Java JDK:Elasticsearch 7.13.4 需要 Java 11。请确保已安装并配置好正确的 Java 版本。OpenJDK 是官方推荐的选择。

  3. 下载安装包:
    ◦ 从官方镜像站或官网下载 elasticsearch-7.13.4-linux-x86_64.tar.gz。

    ◦ 您可以使用 wget 命令直接下载到服务器:
    wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.13.4-linux-x86_64.tar.gz

    ◦ 下载后,验证 SHA 校验码以确保文件完整(可选但推荐):
    shasum -a 512 elasticsearch-7.13.4-linux-x86_64.tar.gz
    # 将输出与从官网下载页获得的 SHA512 码进行对比

详细部署步骤

步骤 1:安装 Java JDK 11

如果您的系统没有安装 Java 11,请先安装。

• 对于 Ubuntu/Debian:
sudo apt update
sudo apt install openjdk-11-jdk

• 对于 CentOS/RHEL:
sudo yum install java-11-openjdk-devel

• 验证安装:
java -version

输出应显示 openjdk version "11.0.x"。

步骤 2:创建专用用户

出于安全原因,Elasticsearch 不允许使用 root 用户运行。我们必须创建一个专用用户。

创建一个名为 elasticsearch 的用户组

sudo groupadd elasticsearch

创建一个名为 elasticsearch 的用户,并将其添加到该用户组,同时创建家目录

sudo useradd -m -g elasticsearch -s /bin/bash elasticsearch

为 elasticsearch 用户设置密码(可选,用于切换用户)

sudo passwd elasticsearch

步骤 3:解压安装包

假设您将安装包下载到了 /opt 目录,这是一个常见的软件安装位置。

切换到安装包所在目录

cd /opt

解压压缩包

sudo tar -xzf elasticsearch-7.13.4-linux-x86_64.tar.gz

将解压后的目录重命名为一个更简洁的名字(可选但推荐)

sudo mv elasticsearch-7.13.4 elasticsearch

将目录的所有权授予我们刚创建的 elasticsearch 用户

sudo chown -R elasticsearch:elasticsearch /opt/elasticsearch

步骤 4:修改系统配置(重要)

Elasticsearch 可能需要比默认限制更多的资源。

  1. 修改文件描述符和线程数限制:
    编辑 /etc/security/limits.conf 文件,在文件末尾添加:
    elasticsearch - nofile 65535
    elasticsearch - memlock unlimited

    • soft nproc 4096
    • hard nproc 4096

    ◦ nofile 65535:允许 Elasticsearch 同时打开大量文件(索引由文件组成)。

    ◦ memlock unlimited:允许锁定内存,防止交换(SWAP)影响性能。

  2. 修改虚拟内存映射限制:
    Elasticsearch 使用 mmap 来高效存储索引。编辑 /etc/sysctl.conf 文件,添加:
    vm.max_map_count=262144

    然后应用更改:
    sudo sysctl -p

步骤 5:配置 Elasticsearch

主要配置文件是 /opt/elasticsearch/config/elasticsearch.yml。使用 nano 或 vim 进行编辑。
sudo -u elasticsearch nano /opt/elasticsearch/config/elasticsearch.yml

找到并修改以下关键配置(取消注释并修改值):

---------------------------------- Cluster -----------------------------------

集群名称,默认是 elasticsearch。同一集群内的节点应使用相同的名称。

cluster.name: my-es-cluster

------------------------------------ Node ------------------------------------

节点名称,默认是随机生成的UUID。建议赋予一个有意义的名称。

node.name: node-1

该节点是否有资格成为主节点(Master-eligible node)

node.master: true

该节点是否存储数据(Data node)

node.data: true

----------------------------------- Paths ------------------------------------

数据目录路径。可以配置多个路径(用逗号分隔)。

path.data: /opt/elasticsearch/data

日志目录路径。

path.logs: /opt/elasticsearch/logs

----------------------------------- Memory -----------------------------------

启动时锁定内存,与之前在 limits.conf 中的配置对应。

bootstrap.memory_lock: true

---------------------------------- Network -----------------------------------

设置绑定的主机地址。0.0.0.0 表示绑定所有网络接口,允许外部访问。

警告:生产环境请结合防火墙设置,不要随意开放为 0.0.0.0。

network.host: 0.0.0.0

设置HTTP访问端口,默认是 9200。

http.port: 9200

--------------------------------- Discovery ----------------------------------

设置初始主节点的地址列表,用于节点发现和组建集群。

对于单节点部署,填写本机节点名称。

discovery.seed_hosts: [“localhost”]
cluster.initial_master_nodes: [“node-1”]

保存并退出编辑器。

步骤 6:启动 Elasticsearch

切换到 elasticsearch 用户,并启动服务。

切换到 elasticsearch 用户

sudo -u elasticsearch -s

如果提示符变了,说明切换成功。然后进入 Elasticsearch 的 bin 目录

cd /opt/elasticsearch/bin/

在后端启动 Elasticsearch (使用 -d 参数)

./elasticsearch -d

• -d 参数表示以守护进程(daemon)模式运行。

步骤 7:验证安装

等待十几秒后,通过 HTTP API 检查 Elasticsearch 是否运行正常。
curl -X GET “localhost:9200/”

或者,如果您的服务器有图形界面浏览器,也可以从另一台机器访问 http://<您的服务器IP>:9200/。

您应该会收到一个类似以下的 JSON 响应:
{
“name” : “node-1”,
“cluster_name” : “my-es-cluster”,
“cluster_uuid” : “abcd1234…”,
“version” : {
“number” : “7.13.4”,
“build_flavor” : “default”,
“build_type” : “tar”,
“build_hash” : “…”,
“build_date” : “2021-07-14T…”,
“build_snapshot” : false,
“lucene_version” : “8.8.2”,
“minimum_wire_compatibility_version” : “6.8.0”,
“minimum_index_compatibility_version” : “6.0.0-beta1”
},
“tagline” : “You Know, for Search”
}

步骤 8(可选):配置为系统服务

手动启动不方便管理,最好配置为 systemd 服务。

  1. 创建服务文件:
    sudo nano /etc/systemd/system/elasticsearch.service

  2. 将以下内容写入文件:
    [Unit]
    Description=Elasticsearch
    Documentation=https://www.elastic.co
    After=network.target

    [Service]
    Type=simple
    User=elasticsearch
    Group=elasticsearch
    Environment=“ES_JAVA_OPTS=-Xms1g -Xmx1g”
    Environment=“ES_PATH_CONF=/opt/elasticsearch/config”
    ExecStart=/opt/elasticsearch/bin/elasticsearch
    Restart=always
    LimitNOFILE=65535
    LimitMEMLOCK=infinity

    [Install]
    WantedBy=multi-user.target

    ◦ User 和 Group:指定运行服务的用户和组。

    ◦ ES_JAVA_OPTS:设置 JVM 堆内存大小。-Xms1g -Xmx1g 表示初始和最大堆内存均为 1GB。生产环境请根据服务器内存调整(通常不超过物理内存的50%)。

    ◦ ES_PATH_CONF:指定配置目录路径。

  3. 重新加载 systemd 并启动服务:
    sudo systemctl daemon-reload
    sudo systemctl enable elasticsearch # 设置开机自启
    sudo systemctl start elasticsearch # 启动服务
    sudo systemctl status elasticsearch # 查看服务状态

现在,您可以使用 systemctl 命令来管理 Elasticsearch 了(start, stop, restart, status)。

故障排除

• 无法绑定到 9200 端口:检查是否有其他进程占用了该端口 (netstat -tulpn | grep :9200)。

• 内存锁定失败:确保已正确配置 /etc/security/limits.conf 并且用户是 elasticsearch。查看日志 /opt/elasticsearch/logs/my-es-cluster.log 获取详细信息。

• 无法用外网 IP 访问:

1.  确认 network.host 设置为 0.0.0.0。
2.  检查服务器防火墙(如 ufw 或 firewalld)是否放行了 9200 端口。▪   UFW (Ubuntu):sudo ufw allow 9200/tcp▪   Firewalld (CentOS):sudo firewall-cmd --add-port=9200/tcp --permanent && sudo firewall-cmd --reload

• 查看日志:日志文件是解决问题的第一选择,路径在 /opt/elasticsearch/logs/。

恭喜您!现在您已经成功在 Linux 上部署并运行了 Elasticsearch 7.13.4。接下来您可以开始安装 Kibana 作为可视化界面,或者开始学习如何插入和查询数据。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/925838.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深入解析:Visual RM 用智能引擎重塑企业协作新模式!

深入解析:Visual RM 用智能引擎重塑企业协作新模式!pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas&qu…

学习unigui【36】把数据导航放在Unidbgrid脚中

学习unigui【36】把数据导航放在Unidbgrid脚中UniDBGrid1.WebOptions.Paged := True;UniDBGrid1.PagingBarAuxControl := UniDBNavigator1;

比较好的源码网站天津网站建设业务

借鉴https://blog.csdn.net/aaa333qwe/article/details/79025336 往浏览器里面储存数据 localStorage.setItem(‘todos’, JSON.stringify(value)) 读取 const list JSON.parse(localStorage.getItem(‘todos’)) || []

Windows 11 共享打印机设置

IX. 匿名共享方案(不推荐) 下面是一些匿名共享方案,从网络安全角度考虑强烈不建议使用! FIX: Windows 11 24H2 Cannot Access Network Shares (0x80070035) Allow Anonymous Access to Shared Folder or Printer o…

河南建设银行网站seo外链是什么

1、将dom转换为图片 这里我们使用html2canvas工具插件先将dom转为canvas元素然后canvas拥有一个方法可以将绘制出来的图形转为url然后下载即可注意&#xff1a;如果元素使用了渐变背景并透明的话&#xff0c;生成的图片可能会有点问题。我下面这个案例使用了渐变背景实现元素对…

Win7下bat条件满足语句不执行的奇怪案例

前言全局说明今天在写bat脚本时,一个if里的部分代码不执行。一、说明 1.1 环境: Windows 7 旗舰版二、错误结果 2.1 错误结果图片2.2 错误结果代码 @echo offset updata_conf_flag=False@REM 检查adb_PATH变量是否空 …

qt qtablewidget 行拖动(事件过滤器)

#include <QTableWidget> class TablewidgetLineDropFilter : public QObject {Q_OBJECT public:explicit TablewidgetLineDropFilter(QTableWidget* _box,QObject *parent = nullptr) : QObject(parent) {table…

3.8 材料链路层设备 (答案见原书 P122)

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

for (EmpExpr empExpr : exprList) {}语法糖

for (EmpExpr empExpr : exprList) {循环体}这段代码表示对名为exprList的集合进行遍历,每次循环取出其中的元素作为EmpExpr类型的对象empExpr。 (遍历 exprList 集合中的每一个元素,每次循环将当前元素赋值给 empE…

251003

目录JT-JY6T3S1-1JT-JY6T3S2-2FT-(JY&VOAs) JT-JY6T3S1-1Good morning, id like to open the bank account please. Certainly, if youd like to take a seat , iwill just get some details from you, you wont t…

wordpress建站博客网站建设公司业务跟不上

3D产品配置器能够为企业的客户带来多重好处&#xff0c;提升他们的整体购物体验和满意度。 主要优势分析&#xff1a; 1、 提升购物体验&#xff1a;3D产品配置器通过提供交互式的3D可视化体验&#xff0c;使客户能够从不同角度查看和理解产品&#xff0c;从而提升他们的购物体…

济宁网站建设 果壳科技wordpress制作数据排行榜

引言 什么是分布式锁&#xff1f; 分布式锁是分布式系统中用于控制多个进程或线程对共享资源的访问的一种机制。在分布式系统中&#xff0c;由于存在多个服务实例或节点&#xff0c;它们可能会同时尝试访问或修改同一份数据或资源。如果没有适当的同步机制&#xff0c;就可能导…

怎么做个人网站建设wordpress关闭注册发邮件

目录快捷键文字样式设置&#xff08;字体, 大小, 颜色, 高亮底色&#xff09;内嵌HTML表格定义列表代码块脚注数学公式UML 图:离线写博客常见颜色[TOC](目录)快捷键 - 加粗 Ctrl B - 斜体 Ctrl I - 引用 Ctrl Q- 插入链接 Ctrl L- 插入代码 Ctrl K- 插入图…

1核1g服务器做网站网页生成助手

大家好&#xff0c;这里是深海网络&#xff0c;今天给大家讲解一下新版影视小程序搭建。  首先给大家看一下新版影视小程序是什么样子的&#xff0c;它有黑夜和白天两种观影模式&#xff0c;而且搜索精准&#xff0c;播放速度快。01第一步&#xff0c;开始正式搭建。新版区小…

深入解析:以CodeBuddy Code为砚,Prompt为丹青,勾勒编程星河

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

学习项目movie-web:构建本地电影、电视视频中心 - 教程

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

Rust泛型详解 - 实践

Rust泛型详解 - 实践pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "…

网站建设课程的感想在线考试系统网站开发

算法提高课整理 CSDN个人主页&#xff1a;更好的阅读体验 原题链接 题目描述 给定一个长度为 n n n 的数组&#xff0c;数组中的第 i i i 个数字表示一个给定股票在第 i i i 天的价格。 设计一个算法来计算你所能获取的最大利润&#xff0c;你最多可以完成 k k k 笔交易…

怎么做自己的购物网站怎么给自己建网站

文章目录树状数组lowbit线段树与树状数组单点修改区间查询区间修改区间求和二维树状数组离线树状数组例题POJ&#xff1a;starsMooFest[SDOI2009]HH的项链Turing TreeCounting SequencesZip-line树状数组 用于快速高效的计算与前缀和相关的信息 lowbit int lowbit( int i ) …

有个做搞笑视频的网站桂林市天气预报15天准确

在开发项目过程中&#xff0c;为了方便调试代码&#xff0c;经常会向stdout中输出一些日志&#xff0c;默认的这些日志就直接显示在了终端中。而一般的应用服务器&#xff0c;第三方库&#xff0c;甚至服务器的一些通告也会在终端中显示&#xff0c;这样就搅乱了我们想要的信息…