当前位置: 首页 > article >正文

Es搭建——单节点——Linux

Es搭建——单节点——Linux

一、安装
下载安装包:
官网下载地址:https://www.elastic.co/downloads/elasticsearch
上传包到linux 切换到安装目录下
解压:tar -zxvf elasticsearch-7.17.1-linux-x86_64.tar.gz
重命名安装文件夹 mv elasticsearch-7.17.1 es
cd xxxx(es安装目录)/es
二、配置文件修改
注意:冒号后面有个空格,否则会导致配置文件格式错误,启动时报错
1、elasticsearch.yml

cd  config
vi  elasticsearch.yml

集群相关设置

-------------------------------Cluster-------------------------------
cluster.name: 设置你的集群名称(例es-test)

节点相关设置

-------------------------------Node----------------------------------
node.name: 设置你的节点名称(例estest-node-1)

网络相关设置

-------------------------------Network----------------------------------
network.host: 部署该节点的服务器IP
http.port: 9200 (es服务对外的端口,默认即可) (设置0.0.0.0时,允许任何ip访问)

集群发现相关设置

-------------------------------Discovery----------------------------------
#初始主节点列表,集群自动发现选举master
cluster.initial_master_nodes: Node中设置的该节点名称(例estest-node-1)

三:启动ES
1、测试启动服务

cd  xxxx(es安装目录)/es/bin
./elasticsearch

2、后台启动

./elasticsearch -d

四:依次解决报错
1、es本身自带的jdk版本与服务器所安装jdk版本冲突

warning: usage of JAVA_HOME is deprecated, use ES_JAVA_HOME
Future versions of Elasticsearch will require Java 11; your Java version from [xxxxx/jdk1.8.0/jre] does not meet this requirement. Consider switching to a distribution of Elasticsearch with a bundled JDK. If you are already using a distribution with a bundled JDK, ensure the JAVA_HOME environment variable is not set.

报错原因:
elasticsearch默认启动时
先找系统安装的jdk,若未安装jdk则使用es自带的jdk,系统无需再安装jdk
若系统已安装jkd且与es所需jdk版本不一致,则es启动报错jdk版本问题
见es/bin 中的elasticsearch-env 的jdk判断代码
报错信息和echo输出内容符合,说明走的是:"elif [ ! -z “$JAVA_HOME” ]; then"分支

# now set the path to java
if [ ! -z "$ES_JAVA_HOME" ]; then
  JAVA="$ES_JAVA_HOME/bin/java"
  JAVA_TYPE="ES_JAVA_HOME"
elif [ ! -z "$JAVA_HOME" ]; then
  # fallback to JAVA_HOME
  echo "warning: usage of JAVA_HOME is deprecated, use ES_JAVA_HOME" >&2
  JAVA="$JAVA_HOME/bin/java"
  JAVA_TYPE="JAVA_HOME"
else
  # use the bundled JDK (default)
  if [ "$(uname -s)" = "Darwin" ]; then
    # macOS has a different structure
    JAVA="$ES_HOME/jdk.app/Contents/Home/bin/java"
  else
    JAVA="$ES_HOME/jdk/bin/java"
  fi
  JAVA_TYPE="bundled JDK"
fi

即:【补流程图】

解决方案:
系统不重新安装es所需jdk版本时,使用es内置jdk
方法a、配置 ES_JAVA_HOME路径
因为没有识别到ES_JAVA_HOME,故需配置ES_JAVA_HOME

#编辑配置文件
vi ~/.bashrc
#在末尾添加以下内容
export ES_JAVA_HOME=xxxx(es安装目录)/es/jdk
#使命令生效
source ~/.bashrc
#检查配置是否成功
echo $ES_JAVA_HOME

方法b、修改配置 指定系统的JAVA_HOME为es的jdk路径

cd   xxxx(es安装目录)/es/bin
vi ./elasticsearch       【此处需再确认---方法是否正确】
#添加以下配置
# 将jdk修改为es中自带jdk的配置目录
export JAVA_HOME=xxxx(es安装目录)/es/jdk
export PATH=$JAVA_HOME/bin:$PATH

if [ -x "$JAVA_HOME/bin/java" ]; then
        JAVA="xxxx(es安装目录)/es/jdk/bin/java"
else
        JAVA=`which java`
fi

方法c、删除系统jdk的判断,直接启用Es自带的java

cd  xxxx(es安装目录)/es/bin
vi  elasticsearch-env   【此处需再确认---方法是否正确,修改判断后,仍然没有ES_HOME,试下会成功吗】
# now set the path to java
if [ "$(uname -s)" = "Darwin" ]; then
# macOS has a different structure
JAVA="$ES_HOME/jdk.app/Contents/Home/bin/java"
else
JAVA="$ES_HOME/jdk/bin/java"
fi
JAVA_TYPE="bundled jdk"

方法d、将启动时系统jdk路径指定为es自带的jdk

cd  xxxx(es安装目录)/es/bin
vi  elasticsearch-env 

首行代码set -e -o pipefail下
添加JAVA_HOME指向es自带jdk的位置:export JAVA_HOME =xxxx(es安装目录)/es/jdk。

set -e -o pipefail
#添加下行配置:使用es自带的jdk
export JAVA_HOME =xxxx(es安装目录)/es/jdk

参考:
https://blog.csdn.net/smilehappiness/article/details/118466378
https://www.cnblogs.com/zhuhuibiao/p/16446105.html
2、root用户启动es失败

java.lang.RuntimeException: can not run elasticsearch as root

报错原因
es因为安全问题拒绝使用root用户启动
解决方案:
添加系统用户用来启动es

groupadd es 
useradd es -g es -p password # -g 指定组 -p 密码
chown es:es -R xxxx(es安装目录)/es/ # -R 处理指定目录以及其子目录下的所有文件
#切换到es用户
su es
#启动es
./elasticsearch

参考:
https://blog.csdn.net/fwdwqdwq/article/details/124241935
3、max virtual memory areas vm.max_map_count [65530] is too low

ERROR: [1] bootstrap checks failed. You must address the points described in the following [1] lines before starting Elasticsearch.
bootstrap check failure [1] of [1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

报错原因:
Elasticsearch在启动时会检查操作系统的配置,若vm.max_map_count的值太低,就会报错。
vm.max_map_count是Linux系统中一个内核参数,它限制了每个进程可以拥有的内存区域(memory areas)数量。Elasticsearch可能需要比默认更多的内存区域,如果这个值太低,Elasticsearch就会报错。
注:262144是一个常用的值,可根据需求调整,评估可能对系统稳定性造成的影响
解决方案:
永久修改该配置

#切换至root用户
su root
#编辑/etc/sysctl.conf文件
vi /etc/sysctl.conf
#添加配置
vm.max_map_count=262144
#保存退出后
#刷新配置文件使改动立即生效
sudo sysctl -p

参考:
https://blog.csdn.net/jane_xing/article/details/139790289

#继续切换es用户,重新启动es
su es
cd  xxxx(es安装目录)/es/bin
./elasticsearch

4、其他问题待更新
基本解决思路:先使用 ./elasticsearch 方式启动,找到日志的error关键字,百度相关报错信息

五、判断是否启动成功
方法1、检查es进程

ps -ef|grep elasticsearch

方法2、访问url
http://部署该节点的服务器IP:9200/

六、设置es的用户名密码
编辑elasticsearch.yml配置文件

vi xxxx(es安装目录)/es/config/elasticsearch.yml
#在末尾添加下面两行
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true
#保存退出后,重启es(重启后配置才生效)

设置用户名密码

cd  xxxx(es安装目录)/es/bin
elasticsearch-setup-passwords interactive
#依次设置elastic、kibana、logstash等的访问密码

再次url再次访问验证是否生效,出现弹窗则生效
参考:
https://blog.csdn.net/smilehappiness/article/details/118466378
七、单节点关闭es
1、若后台启动,找到对应进程号,直接杀进程即可

ps -ef|grep elasticsearch
kill -9 进程号

2、若控制台启动,直接ctrl+c


http://www.kler.cn/a/457210.html

相关文章:

  • Nature+Science=ONNs(光学神经网络)
  • 【专题】2024年出口跨境电商促销趋势白皮书报告汇总PDF洞察(附原数据表)
  • 前端页面展示本电脑的摄像头,并使用js获取摄像头列表
  • 【每日学点鸿蒙知识】文字识别、快捷登录、输入法按钮监听、IDE自动换行、资产访问等
  • npm install 安装选项 -d -s -g
  • linux自动化批量分发SSH密钥同时批量测试SSH连接教程(包含自动化脚本代码)
  • 【FPGA】ISE13.4操作手册,新建工程示例
  • 嵌入式学习-硬件基础-Day02
  • 深入理解 Cookie 和 Session 在 Java Web 中的应用
  • Unity 实现Canvas显示3D物体
  • 18_HTML5 Web IndexedDB 数据库 --[HTML5 API 学习之旅]
  • 神经网络-Inception
  • vscode vue文件 点击ctrl没有跳转到有@路径的自定义组件
  • React Diffing 算法完整指南
  • 精读DeepSeek v3技术文档的心得感悟
  • ensp 关于ARRP 的讲解 配置
  • 【WSL】Ubuntu 24.04 安装配置docker
  • Lua语言的计算机基础
  • 基于aspose.words组件的word bytes转pdf bytes,去除水印和解决linux中文乱码问题
  • EsChatPro 接入国内 DeepSeek 大模型
  • vue3点击按钮出现右抽屉组件vue页面
  • Linux复习3——管理文件系统2
  • uboot与kernel通常不位于安全secure区域
  • 不同操作系统下安装Node.js及配置环境的详细步骤
  • Linux RTC 驱动框架
  • C++类与对象中