03_Elasticsearch 安装和配置指南(Windows、Linux)

本文大纲

  • 安装环境

    • 安装配置

    • 下载ElasticSearch        

  • Windows下安装

    • 启动ES

  • Linux下安装

    • ES安装文件上传

    • 运行 Elasticsearch

    • 添加用户

    • 修改核心配置文件elasticearch.yml

    • 配置内存设置文件jvm.options

    • 开启防火墙的访问端口

1. 安装环境

1.1. 安装配置

1、新版本要求至少jdk1.8以上。

  • 从Elasticsearch 5开始需要 Java 8 以上版本;

  • Elasticsearch 6.5 开始支持 Java 11;

  • Elasticsearch 7.0 开始,内置了 Java 环境,因此安装 7.0+ 版本会方便很多。

2、支持tar、zip、rpm等多种安装方式。在windows下开发建议使用ZIP解压方式安装,Linux下推荐使用tar.gz解压方式安装。

3、同时也支持docker方式安装。详情参见官方文档:https://www.elastic.co/guide/en/elasticsearch/reference/current/install-elasticsearch.html

1.2. 下载ElasticSearch

最新版本需要访问 ElasticSearch 官网下载:https://www.elastic.co/cn/downloads/elasticsearch,

其他版本见Elastic 中文社区,地址:https://elasticsearch.cn/download

我这里下载的是:ElasticSearch-7.4.2,分别有Linux和Windows版本

Windows:elasticsearch-7.4.2-windows-x86_64.zip
Linux:elasticsearch-7.4.2-linux-x86_64.tar.gz

官网下载可能有些慢,因此一般采用国内镜像或者是其他人下载好上传到网盘的版本,这里将我使用的挂出来。

链接:https://pan.baidu.com/s/1hKglTrPPTFga2nfJNWED5A 提取码:sm42

2. Windows下安装

将下载elasticsearch的Windows版,指定位置解压缩。会得到如下所示文件和文件夹目录结构。

3f99d9958e15be5eee23b354dca6cd07.png

bin:脚本目录,包括:启动、停止等可执行脚本

config:配置文件目录

data:索引目录,存放索引文件的地方

jdk:内置的jdk

lib:依赖的jar,类库

logs:日志目录

modules:模块目录,包括了es的功能模块

plugins:插件目录,es支持插件机制(用于扩展,常见的有集成分词器ik等)

2.1. 启动ES

在bin目录下找到elasticsearch.bat,双击运行。

6a72a3066363491b07b1984b41e18b90.png

启动成功,界面输出默认访问的端口号,分别是http访问的9200端口和java程序通信的tcp访问端口:9300如示。

7acd4cecf7428eab382e883741175504.png

浏览器验证,地址栏输入:http://127.0.0.1:9200,显示如下内容表示ES安装完成。

90dab1946750112515fcbbe6db75da17.png

3. Linux下安装

3.1. ES安装文件上传

1、首先选择下服务器的上传目录,例如在/var/huaxing/(此目录为我这里放置es的目录),使用ftp工具上传文件包(例如我这里使用的是Xftp,他和Xshell一般用于连接服务器)。

bfcddfc6bc0fb946b1e10a8800d4a9d3.png

2、解压压缩包,命令行:tar -zxvf elasticsearch-7.4.2-linux-x86_64.tar.gz

目录树如下所示。

cc2632e5bfb49a2afd648ecff6e698b2.png

3.2. 运行 Elasticsearch

前台启动命令:bin/elasticsearch

启动可能的错误:

future versions of Elasticsearch will require Java 11; your Java version from [/usr/apps/java/jdk1.8.0_221/jre] does not meet this requirement


[2020-09-12T22:52:06,657][WARN ][o.e.b.ElasticsearchUncaughtExceptionHandler] [192.168.235.129] uncaught exception in thread [main]


org.elasticsearch.bootstrap.StartupException: java.lang.RuntimeException: can not run elasticsearch as root

信息如示。

12853cb9dfbb9a1516bcf8ac1e512c64.png

原因:

1、说明这个版本对应的jdk应该是java11。但是我们服务器安装环境中jdk是java8。而新版的es是自带jdk的,于是和机器环境变量的冲突了(但是这个不是主因,因为他使用的是自带的jdk)。

2、错误的真正原因是:es在Linux下启动时不能使用root用户,因此需要额外添加用户解决这个问题

3.3. 添加用户

由于Elasticsearch5.0之后,不能使用root账户启动,因此需要创建一个es用户。

添加命令:

useradd es

赋权命令:

chown -R es:es /var/huaxing/elasticsearch-7.4.2

此处需要注意的是执行赋权命令时要使用root账号进行赋权,不然会赋权失败。运行es时会报以下错误

[es@izwz9hudtjguhbu663uwhez bin]$ ./elasticsearch
Exception in thread "main" java.nio.file.AccessDeniedException: /var/huaxing/elasticsearch-7.4.2/config/jvm.options
  at java.base/sun.nio.fs.UnixException.translateToIOException(UnixException.java:90)
  at java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:111)
  at java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:116)
  at java.base/sun.nio.fs.UnixFileSystemProvider.newByteChannel(UnixFileSystemProvider.java:219)
  at java.base/java.nio.file.Files.newByteChannel(Files.java:374)
  at java.base/java.nio.file.Files.newByteChannel(Files.java:425)
  at java.base/java.nio.file.spi.FileSystemProvider.newInputStream(FileSystemProvider.java:420)
  at java.base/java.nio.file.Files.newInputStream(Files.java:159)
  at org.elasticsearch.tools.launchers.JvmOptionsParser.main(JvmOptionsParser.java:61)

切换root账号后再次启动(前台启动命令):

bin/elasticsearch

结果信息显示有“Security is disabled”表示启动完成,如下图所示。

71c179f862ebae2d7e3f636f8e78a30f.png

推荐使用后台启动的方式。命令:

bin/elasticsearch -d

验证启动,命令:curl 'http://127.0.0.1:9200',显示信息如示。表示可以正常使用

9a2604a34dd45dda8adb8fb7fef0939c.png

3.4. 修改核心配置文件elasticearch.yml

elasticearch.yml文件中主要定义以下内容:

1、集群名称;

2、当前的es节点名称;

3、data数据保存地址和日志数据保存地址;

4、绑定es网络ip;

5、集群节点修改为之前的节点名称

第一步、添加集群名称和节点名称(ES支持进行集群搭建,它自身对集群自定义实现,可以快速搭建),若是仅使用单机版(此步骤可不用设置)

389c7e91443cf504549539084e281431.png

第二步、添加es的 data数据保存地址和日志数据保存地址

(可能需要创建对应位置的data目录,手动创建的目录需要添加到es用户所属)

56ed64518eb5001cccb6a933277909f1.png

第三步、添加es的映射外部访问的ip和端口号

7dff25db69761a2a469643f4b7a193ce.png

注意配置:network.host: 0.0.0.0表示根据机器的网络自动绑定(某些云可能无法绑定公网,例如阿里云,这里就可使用此方式)

PS:阿里云服务器使用0.0.0.0外网会访问不了,必须还需要配置安全组策略,开放对应的端口。

第四步、设置节点名称和主节点数据(单机版主节点设置为1,节点名称采用易于记忆的名称,如:记录在Node位置配置名称)

54d03ca63aa17b88b2aa0c78a81d2219.png

第五步、设置是否可以通过正则或者_all删除或者关闭索引库,默认true表示必须需要显式指定索引库名称

2a04d117de58e32fb12dc1b2812b8668.png

第六步、设置跨域访问(可视化连接时配置)

## 开启跨域访问(配置文件末尾添加即可)
http.cors.enabled: true
http.cors.allow-origin: "*"

elasticsearch.yml的其它可配置信息:

属性名

说明

cluster.name

配置elasticsearch的集群名称,默认是elasticsearch。建议修改成一个有意义的名称。

node.name

节点名,es会默认随机指定一个名字,建议指定一个有意义的名称,方便管理

path.conf

设置配置文件的存储路径,tar或zip包安装默认在es根目录下的config文件夹,rpm安装默认在/etc/ elasticsearch

path.data

设置索引数据的存储路径,默认是es根目录下的data文件夹,可以设置多个存储路径,用逗号隔开

path.logs

设置日志文件的存储路径,默认是es根目录下的logs文件夹

path.plugins

设置插件的存放路径,默认是es根目录下的plugins文件夹

bootstrap.memory_lock

设置为true可以锁住ES使用的内存,避免内存进行swap

network.host

设置bind_host和publish_host,设置为0.0.0.0允许外网访问

http.port

设置对外服务的http端口,默认为9200。

transport.tcp.port

集群结点之间通信端口

discovery.zen.ping.timeout

设置ES自动发现节点连接超时的时间,默认为3秒,如果网络延迟高可设置大些

discovery.zen.minimum_master_nodes

主结点数量的最少值 ,此值的公式为:(master_eligible_nodes / 2) + 1 ,比如:有3个符合要求的主结点,那么这里要设置为2

重新使用后台的方式启动es。

若报错

maybe these locations are not writable or multiple nodes were started without increasing [node.max_local_storage_nodes] (was [1])?

则需要把对应的es使用 kill -9 xxx 命令杀掉对应进程。

3.5. 配置内存设置文件jvm.options

文件路径:/var/huaxing/elasticsearch-7.4.2/config

内存容量较小时修改默认配置:-Xms1g -Xmx1g为-Xms512m -Xmx512m。

f91cbdcd054492e161bc5b831edf514d.png

备注:配置好内存大小以及es所需各项参数后。启动报错:

[2021-11-14T13:36:28,468][INFO ][o.e.b.BootstrapChecks    ] [node-1] bound or publishing to a non-loopback address, enforcing bootstrap checks
[2021-11-14T13:36:28,473][ERROR][o.e.b.Bootstrap          ] [node-1] node validation exception
[1] bootstrap checks failed
[1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

5e076f13a88ecb58b457f349f5a17dcf.png

解决方法:需要切换到root用户修改配置。

1、修改/etc/security/limits.conf 文件

vi /etc/security/limits.conf

添加内容如下所示。

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

2、修改 /etc/sysctl.conf 文件。增加

vm.max_map_count=262145

d7d5ba294f36a471f047018a6f1d449c.png

修改完成使用命令:sysctl -p 刷新使用

a375dc8ceee8a396e6290057ea1e25dc.png

注意点:

1、机器内存可能不够,就需要修改 JVM 参数,配置文件路径为 config/jvm.options,ES V7.1 版本之后默认为 1g, 老版本为2g,可自行修改。
2、Xmx 和Xms 数值请设置相同;
3、Xmx 不要超过机器内存的 50%;
4、内存总量不要超过 30GB, 参见官方文档 https://www.elastic.co/cn/blog/a-heap-of-trouble;

3.6. 开启防火墙的访问端口

1、添加端口:

firewall-cmd --zone=public --add-port=9200/tcp --permanent
firewall-cmd --zone=public --add-port=9300/tcp --permanent

2、重启防火墙:

firewall-cmd --reload

3、查看开放端口:

firewall-cmd --list-port

cdf84301e23acedec0bd6d09f6b82a5d.png

4、外部访问地址(ip+端口),例如:192.168.235.129:9200

1)查看前台方式(bin/elasticsearch)启动结果

5c342ea2cc5b4b46720686e2f333128a.png

外部访问看到信息:

114043f71171734aca9331d93213f55d.png

2)后台启动结果(bin/elasticsearch -d或者到bin目录下执行./elasticsearch -d)

ae304b6418cc6858a258870288136638.png

查看日志信息,命令:cat logs/huaxing.log(其中:huaxing表示配置的集群名称)

最后的结果如下:

5、Linux访问地址(curl ip+端口),例如:curl '172.18.243.43:6688'

ddcafa066f2b99cb02769235a52aefd1.png

以上单机版安装就此结束,已经可以正常使用es了。

  • 6
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

华星详谈

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值