Linux环境下安装Elasticsearch,史上最详细的教程来啦~

您所在的位置:网站首页 安装tar包 Linux环境下安装Elasticsearch,史上最详细的教程来啦~

Linux环境下安装Elasticsearch,史上最详细的教程来啦~

2024-03-04 14:03| 来源: 网络整理| 查看: 265

文章目录 1 前言2 Linux下安装Elasticsearch2.1 下载和解压安装包2.2 解决es强依赖jdk问题2.3 解决内存不足问题2.4 创建专用用户启动ES2.5 修改ES核心配置信息2.6 vm.max_map_count [65530] is too low问题2.7 可能遇到的max file descriptors [4096]问题2.8 ES服务的启动与停止2.9 为Elasticsearch设置登录密码 3 安装elasticsearch-head插件3.1 安装node环境3.2 安装elasticsearch-head3.2.1 下载elasticsearch-head安装包3.2.2 解压zip包3.2.3 npm install3.2.4 启动elasticsearch-head服务3.2.5 访问elasticsearch-head服务3.2.6 使用Head插件访问elasticsearch

1 前言

Java中比较流行的搜索引擎是Elasticsearch,传统的数据库搜索,使用like’关键字%’,当内容过多时性能会大大降低,所以Elasticsearch就出现了。

下面,记录下Linux下Elasticsearch的安装过程。

2 Linux下安装Elasticsearch 2.1 下载和解压安装包

官网下载地址: https://www.elastic.co/cn/downloads/elasticsearch

选择合适的版本下载,然后上传到Linux中

也可以在Linux命令行,直接执行以下命令进行下载(下载比较慢): wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.13.2-linux-x86_64.tar.gz

执行解压缩命令: tar -zxvf elasticsearch-7.13.2-linux-x86_64.tar.gz -C /usr/local

2.2 解决es强依赖jdk问题

由于es和jdk是一个强依赖的关系,所以当我们在新版本的ElasticSearch压缩包中包含有自带的jdk,但是当我们的Linux中已经安装了jdk之后,就会发现启动es的时候优先去找的是Linux中已经装好的jdk,此时如果jdk的版本不一致,就会造成jdk不能正常运行,报错如下:

注:如果Linux服务本来没有配置jdk,则会直接使用es目录下默认的jdk,反而不会报错

warning: usage of JAVA_HOME is deprecated, use ES_JAVA_HOME Future versions of Elasticsearch will require Java 11; your Java version from [/usr/local/jdk1.8.0_291/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.

解决办法:

进入bin目录 cd /usr/local/elasticsearch-7.13.2/bin

修改elasticsearch配置 vim ./elasticsearch

############## 添加配置解决jdk版本问题 ############## # 将jdk修改为es中自带jdk的配置目录 export JAVA_HOME=/usr/local/elasticsearch-7.13.2/jdk export PATH=$JAVA_HOME/bin:$PATH if [ -x "$JAVA_HOME/bin/java" ]; then JAVA="/usr/local/elasticsearch-7.13.2/jdk/bin/java" else JAVA=`which java` fi 2.3 解决内存不足问题

由于 elasticsearch 默认分配 jvm空间大小为2g,修改 jvm空间,如果Linux服务器本来配置就很高,可以不用修改。

error: OpenJDK 64-Bit Server VM warning: INFO: os::commit_memory(0x00000000c6a00000, 962592768, 0) failed; error='Not enough space' (errno=12) at org.elasticsearch.tools.launchers.JvmOption.flagsFinal(JvmOption.java:119) at org.elasticsearch.tools.launchers.JvmOption.findFinalOptions(JvmOption.java:81) at org.elasticsearch.tools.launchers.JvmErgonomics.choose(JvmErgonomics.java:38) at org.elasticsearch.tools.launchers.JvmOptionsParser.jvmOptions(JvmOptionsParser.java:13

进入config文件夹开始配置,编辑jvm.options: vim /usr/local/elasticsearch-7.13.2/config/jvm.options

默认配置如下: -Xms2g -Xmx2g 默认的配置占用内存太多了,调小一些: -Xms256m -Xmx256m 2.4 创建专用用户启动ES

root用户不能直接启动Elasticsearch,所以需要创建一个专用用户,来启动ES

java.lang.RuntimeException: can not run elasticsearch as root at org.elasticsearch.bootstrap.Bootstrap.initializeNatives(Bootstrap.java:101) at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:168) at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:397) at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:159) at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:150) at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:75) at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:116) at org.elasticsearch.cli.Command.main(Command.java:79) at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:115) at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:81)

创建用户 useradd user-es

创建所属组: chown user-es:user-es -R /usr/local/elasticsearch-7.13.2

切换到user-es用户 su user-es

进入bin目录 cd /usr/local/elasticsearch-7.13.2/bin

启动elasticsearch ./elasticsearch

如果出现如下错误信息(最大文件数太小、线程太小、内存太低):

2.5 修改ES核心配置信息

执行命令修改elasticsearch.yml文件内容 vim /usr/local/elasticsearch-7.13.2/config/elasticsearch.yml

修改数据和日志目录 这里可以不用修改,如果不修改,默认放在elasticsearch根目录下

# 数据目录位置 path.data: /home/新用户名称/elasticsearch/data # 日志目录位置 path.logs: /home/新用户名称/elasticsearch/logs

修改绑定的ip允许远程访问

#默认只允许本机访问,修改为0.0.0.0后则可以远程访问 # 绑定到0.0.0.0,允许任何ip来访问 network.host: 0.0.0.0

初始化节点名称

cluster.name: elasticsearch node.name: es-node0 cluster.initial_master_nodes: ["es-node0"]

修改端口号(非必须)

http.port: 19200 2.6 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用户拥有的内存权限太小,至少需要262144,解决办法: 在 /etc/sysctl.conf 文件最后添加如下内容,即可永久修改

切换到root用户 执行命令:su root

执行命令 vim /etc/sysctl.conf

添加如下内容 vm.max_map_count=262144

保存退出,刷新配置文件 sysctl -p

切换user-es用户,继续启动 su user-es

启动es服务 /usr/local/elasticsearch-7.13.2/bin/elasticsearch

启动成功后,可以通过http://127.0.0.1:19200/访问,如果出现以下内容,说明ES安装成功:

{ "name": "es-node0", "cluster_name": "elasticsearch", "cluster_uuid": "SRwJX4sYQ8el4N5wj4tOmA", "version": { "number": "7.13.2", "build_flavor": "default", "build_type": "tar", "build_hash": "4d960a0733be83dd2543ca018aa4ddc42e956800", "build_date": "2021-06-10T21:01:55.251515791Z", "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" } 2.7 可能遇到的max file descriptors [4096]问题

[1]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65535]

切换到root用户,执行命令: vi /etc/security/limits.conf

添加如下内容:

* soft nofile 65536 * hard nofile 131072 * soft nproc 2048 * hard nproc 4096

然后重启linux

2.8 ES服务的启动与停止

前台运行,Ctrl + C 则程序终止 /usr/local/elasticsearch-7.13.2/bin/elasticsearch

后台运行 /usr/local/elasticsearch-7.13.2/bin/elasticsearch -d 出现started时启动完成

关闭ES服务 kill pid

说明: Elasticsearch端口9300、9200,其中: 9300是tcp通讯端口,集群ES节点之间通讯使用,9200是http协议的RESTful接口

2.9 为Elasticsearch设置登录密码

ES7.x以后的版本将安全认证功能免费开放了,并将X-pack插件集成了到了开源的ElasticSearch版本中。下面将介绍如何利用X-pack给ElasticSearch相关组件设置用户名和密码。

编辑配置文件 vim /usr/local/elasticsearch-7.13.2/config/elasticsearch.yml

在 elasticsearch.yml 末尾,加入以下内容:

xpack.security.enabled: true xpack.security.transport.ssl.enabled: true

编辑内容后重启Elasticsearch服务(必须操作)

设置用户名和密码 /usr/local/elasticsearch-7.13.2/bin/elasticsearch-setup-passwords interactive 这里依次设置elastic、kibana、logstash等的访问密码,test123 在这里插入图片描述

设置了访问密码,再次访问ES时,需要输入密码 在这里插入图片描述

好啦,单机版Elasticsearch服务终于安装好了,还是有点麻烦哦~

3 安装elasticsearch-head插件

ealsticsearch只是后端提供各种resulful api,那么怎么直观的看它的信息呢?

elasticsearch-head是一款专门针对于elasticsearch的客户端工具,用来展示数据。

elasticsearch-head是基于JavaScript语言编写的,可以使用npm部署 npm是Nodejs下的包管理器。

3.1 安装node环境

如果Linux服务已经安装过node环境,这个步骤可以跳过,没有node环境的,可以参考我另一篇博文:Linux下安装node环境

npm环境准备好了之后,开始安装elasticsearch-head

3.2 安装elasticsearch-head 3.2.1 下载elasticsearch-head安装包

下载地址: https://github.com/mobz/elasticsearch-head

在这里插入图片描述

3.2.2 解压zip包

执行命令: unzip elasticsearch-head-5.0.0.zip

把安装包移动到/usr/local下: mv elasticsearch-head-5.0.0 /usr/local/

3.2.3 npm install

进入安装目录 cd /usr/local/elasticsearch-head-5.0.0

执行命令安装 npm install 注:如果执行失败,可以cnpm install,使用cnpm之前需要安装cnpm,通过 npm install -g cnpm --registry=https://registry.npm.taobao.org 该命令安装

显示所有使用帮助信息 npm -l

每个项目的根目录下面,一般都有一个package.json文件,定义了这个项目所需要的各种模块,以及项目的配置信息(比如名称、版本、许可证等元数据)

npm install命令根据这个配置文件,自动下载所需的模块,也就是配置项目所需的运行和开发环境。

3.2.4 启动elasticsearch-head服务

启动服务 npm run start 或者 npm run-script start

可以后台启动 nohup npm run-script start &

出现下图,说明启动elasticsearch-head服务成功: 在这里插入图片描述

3.2.5 访问elasticsearch-head服务

然后访问: http://localhost:9100/

elasticsearch-head服务访问成功: 在这里插入图片描述

3.2.6 使用Head插件访问elasticsearch

访问失败,要允许跨域,需要修改elasticsearch.yml文件,添加如下内容:

http.cors.enabled: true http.cors.allow-origin: "*"

出现以下界面,说明访问成功: 在这里插入图片描述

好啦,本期教程就先到这里啦,欢迎老铁们评论交流~

参考资料链接: https://www.cnblogs.com/jhtian/p/12664890.html

写博客是为了记住自己容易忘记的东西,另外也是对自己工作的总结,希望尽自己的努力,做到更好,大家一起努力进步! 如果有什么问题,欢迎大家一起探讨,代码如有问题,欢迎各位大神指正! 给自己的梦想添加一双翅膀,让它可以在天空中自由自在的飞翔!



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3