Linux下ElasticSearch安装和基本使用

安装

下载安装目录:/home/es-7.12.0
es启动用户:zmsz

出于安全考虑,elasticsearch默认不允许以root账号运行,所有一定要创建一个其他用户执行启动命令,不然一定会报错!!

创建用户:useradd zmsz
设置密码:passwd zmsz

下载解压

  • 下载:官网
    在这里插入图片描述
    以最新版8.6为准,执行wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.6.0-linux-x86_64.tar.gz
  • 解压安装
    解压:tar -zxvf elasticsearch-7.12.0-linux-x86_64.tar.gz

配置

  • 增加日志目录(logs)和数据目录(data)
    #进入根目录
    mkdir data
    mkdir logs
    
  • 编辑 vim conf/elasticsearch.yml
    # 数据目录位置
    # 集群名称,各节点配成相同的集群名称。
    cluster.name: zmsz    
    path.data: /home/es/data
    # 日志目录位置
    path.logs: /home/es/logs
    #绑定的ip:默认只允许本机访问,修改为0.0.0.0后则可以远程访问
    network.host: 0.0.0.0
    #设置对外服务的http端口,默认为9200。  
    http.port: 9200
    node.name: node-1
    cluster.initial_master_nodes: ["node-1"]
    
  • 修改/etc/security/limits.conf文件 增加配置
    vi /etc/security/limits.conf
    在文件最后,增加如下配置:
    
    * soft nofile 65536
    * hard nofile 65536
    
    在/etc/sysctl.conf文件最后添加一行 vm.max_map_count=655360 添加完毕之后,
    执行命令: sysctl -p
    

启动

  • 先将es文件夹下的所有目录的所有权限迭代给esuser用户
    chgrp -R zmsz ./es-7.12.0
    chown -R zmsz ./es-7.12.0
    chmod 777 es-7.12.0
    
  • 启动
    先切换到esuser用户启动
    
    su zmsz
    
    前台启动: ./bin/elasticsearch
    后台启动: ./bin/elasticsearch -d
    

常见错误

  1. [esuser@VM-0-15-centos bin]$ ./elasticsearch
    warning: ignoring JAVA_HOME=/usr/local/jdk1.8.0_333; using bundled JDK
    [2023-01-12T11:37:34,242][ERROR][o.e.b.Elasticsearch ] [VM-0-15-centos] fatal exception while booting Elasticsearchjava.lang.IllegalStateException: jar hell!
    class: sun.tools.jar.CommandLine
    jar1: /usr/local/jdk1.8.0_333/jre/lib/rt.jar
    jar2: /usr/local/jdk1.8.0_333/lib/tools.jar
    at org.elasticsearch.base@8.6.0/org.elasticsearch.jdk.JarHell.checkClass(JarHell.java:315)
    at org.elasticsearch.base@8.6.0/org.elasticsearch.jdk.JarHell.checkJarHell(JarHell.java:233)
    at org.elasticsearch.base@8.6.0/org.elasticsearch.jdk.JarHell.checkJarHell(JarHell.java:84)
    at org.elasticsearch.server@8.6.0/org.elasticsearch.bootstrap.Elasticsearch.initPhase2(Elasticsearch.java:180)
    at org.elasticsearch.server@8.6.0/org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:66)

See logs for more details.

ERROR: Elasticsearch did not exit normally - check the logs at /home/elasticsearch-8.6.0/esData/logs/elasticsearch.log

ERROR: Elasticsearch exited unexpectedly

jdk版本问题,8.6需要jdk17

jdk和es的关系

Elasticsearch版本JDK版本
Elasticsearch 5.0.xOpenJDK/AdoptOpenJDK 8
Elasticsearch 5.1.xOpenJDK/AdoptOpenJDK 8
Elasticsearch 5.2.xOpenJDK/AdoptOpenJDK 8
Elasticsearch 5.3.xOpenJDK/AdoptOpenJDK 8
Elasticsearch 5.4.xOpenJDK/AdoptOpenJDK 8
Elasticsearch 5.5.xOpenJDK/AdoptOpenJDK 8
Elasticsearch 5.6.xOpenJDK/AdoptOpenJDK 8
Elasticsearch 6.0.xOpenJDK/AdoptOpenJDK 8
Elasticsearch 6.1.xOpenJDK/AdoptOpenJDK 8
Elasticsearch 6.2.xOpenJDK/AdoptOpenJDK 8、OpenJDK 9
Elasticsearch 6.3.xOpenJDK/AdoptOpenJDK 8、OpenJDK 10
Elasticsearch 6.4.xOpenJDK/AdoptOpenJDK 8、OpenJDK 10
Elasticsearch 6.5.xOpenJDK/AdoptOpenJDK 8、OpenJDK 11
Elasticsearch 6.6.xOpenJDK/AdoptOpenJDK 8、OpenJDK 11
Elasticsearch 6.7.xOpenJDK/AdoptOpenJDK 8、OpenJDK 11、OpenJDK 12
Elasticsearch 6.8.xOpenJDK/AdoptOpenJDK 8、OpenJDK/AdoptOpenJDK 11、OpenJDK 12、OpenJDK/AdoptOpenJDK 13、OpenJDK/AdoptOpenJDK 14
Elasticsearch 7.0.xOpenJDK/AdoptOpenJDK 8、OpenJDK 11、OpenJDK 12

springBoot和es的关系
在这里插入图片描述
2. Cannot open file logs/gc.log due to Permission denied

[es@VM-0-16-centos elasticsearch-6.8.13]$ ./bin/elasticsearch
Java HotSpot(TM) 64-Bit Server VM warning: Cannot open file logs/gc.log due to Permission denied

Exception in thread "main" org.elasticsearch.bootstrap.BootstrapException: org.elasticsearch.cli.UserException: unable to create temporary keystore at [/home/es/elasticsearch-6.8.13/config/elasticsearch.keystore.tmp], please check filesystem permissions
Likely root cause: java.nio.file.AccessDeniedException: /home/es/elasticsearch-6.8.13/config/elasticsearch.keystore.tmp
	at sun.nio.fs.UnixException.translateToIOException(UnixException.java:84)
	at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:102)
	at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:107)
	at sun.nio.fs.UnixFileSystemProvider.newByteChannel(UnixFileSystemProvider.java:214)
	at java.nio.file.spi.FileSystemProvider.newOutputStream(FileSystemProvider.java:434)
	at java.nio.file.Files.newOutputStream(Files.java:216)
	at org.apache.lucene.store.FSDirectory$FSIndexOutput.<init>(FSDirectory.java:411)
	at org.apache.lucene.store.FSDirectory$FSIndexOutput.<init>(FSDirectory.java:407)
	at org.apache.lucene.store.FSDirectory.createOutput(FSDirectory.java:255)
	at org.elasticsearch.common.settings.KeyStoreWrapper.save(KeyStoreWrapper.java:472)
	at org.elasticsearch.bootstrap.Bootstrap.loadSecureSettings(Bootstrap.java:238)
	at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:295)
	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:86)
	at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:124)
	at org.elasticsearch.cli.Command.main(Command.java:90)
	at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:116)
	at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:93)
Refer to the log for complete error details.

用户没有权限打开 log 文件:
切换至root用户,对当前文件夹执行 chmod 777 -R 指令赋予权限。

3.max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

ERROR: [1] bootstrap checks failed
[1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
[2023-10-07T17:19:36,018][INFO ][o.e.n.Node               ] [node-1] stopping ...
[2023-10-07T17:19:36,037][INFO ][o.e.n.Node               ] [node-1] stopped
[2023-10-07T17:19:36,037][INFO ][o.e.n.Node               ] [node-1] closing ...
[2023-10-07T17:19:36,053][INFO ][o.e.n.Node               ] [node-1] closed
[2023-10-07T17:19:36,057][INFO ][o.e.x.m.p.NativeController] [node-1] Native controller process has stopped - no new native processes can be started

解决方法:
解决方案:
vim /etc/sysctl.conf

添加如下所示配置:
vm.max_map_count=655360

保存退出即可

刷新配置
sysctl -p /etc/sysctl.conf/

  1. ES:flood stage disk watermark 「95%」 exceeded
    最近遇到一个问题:往系统中写入数据后,查询出来的结果一直为空,由于查询用到了Elasticsearch 分布式搜索引擎。检查es日志,提示"flood stage disk watermark [95%] exceeded",得知磁盘使用率超出阈值,es索引模式变为只读,无法写入数据,从而造成数据同步失败。

image.png
针对该问题,有两种解决办法:

清理磁盘空间
因为Elasticsearch 会对磁盘空间进行监控,当磁盘剩余空间达到了 floodstage 阈值,会将所有相关索引强制置为只读。需要清理磁盘空间后,才能写入数据。

调整ElasticSearch的默认阈值
在/config/elasticsearch.yml 文件中增加如下配置:

cluster.routing.allocation.disk.watermark.low: 90%

cluster.routing.allocation.disk.watermark.high: 95%

cluster.routing.allocation.disk.watermark.flood_stage: 97%

cluster.routing.allocation.disk.watermark.low: 100gb

cluster.routing.allocation.disk.watermark.high: 50gb

cluster.routing.allocation.disk.watermark.flood_stage: 10gb
其中,
cluster.routing.allocation.disk.watermark.low,默认85%,用于控制磁盘的最小使用率;cluster.routing.allocation.disk.watermark.high,默认90%,用于控制磁盘的最大使用率;cluster.routing.allocation.disk.watermark.flood_stage,默认95%,超过此值时,Elasticsearch 变成只读模式,无法写入数据。

注:上述配置必须同时设为百分比,或具体字节值,不能混用。

作者:於菟酱
链接:https://www.jianshu.com/p/e1867d618351
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

安装kibana

下载和es一一对应的版本
安装

后台启动 nohup bin/kibana &

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值