背景:
最近公司要做用户行为日志的可视化展示,因为Elasticsearch对数据的可视化展示提供了初步支撑所以决定使用Elasticsearch。
个人理解:
Elasticsearch相当于提供数据存储功能的应用系统,提送数据的存储【包含数据分片和存储】功能并对外开放接口/API;
Kibana提供数据的可视化展示功能,其数据源为Elasticsearch;
总之,用起来挺简单的,但是安装和适配的过程会比较烦。
安装
- elasticsearch 安装
Elasticsearch的安装实际就是下载解压[假设解压目录为/opt]然后进入bin目录执行可执可执行文件就好了,但是在执行
./elasticsearch
命令时可能会出现如下错误:
异常和解决方案
a、Exception in thread "main" java.lang.RuntimeException: don't run elasticsearch as root.
解决方案:
创建普通用户和普通用户组,如:elsearch用户组及elsearch用户
1、新增用户组
groupadd elsearch
2、新增用户并将其加入新增的用户组中
useradd elsearch -g elsearch -p /opt/elasticsearch-7.3.1
3、更改elasticsearch文件夹及内部文件的所属用户及组为elsearch:elsearch
cd elasticsearch-7.3.1
chown -R elsearch:elsearch /opt/elasticsearch-7.3.1
4、切换到新增的普通用户启动/后台启动
su elsearch cd /opt/elasticsearch/bin
./elasticsearch
或者后台启动
./elasticsearch -d
(注:ElasticSearch后台启动命令): ./elasticsearch -d
参考文章:
ElasticSearch Root身份运行异常解决方案
elasticsearch 7.2.0安装
b、future versions of Elasticsearch will require Java 11; your Java version from [/opt/jdk1.8.0_211/jre] does not meet this requirement
解决方案:
Elasticsearch7.2启动指定JDK11
c、Error: Could not find or load main class org.elasticsearch.tools.java_version_checker.JavaVersionChecker
原因:
因为elasticsearch安装目录放在了root的家目录下,新用户是不能访问到的,所以即使新增的elasticsearch属于新用户了,但目录权限原因访问不到lib里的jar包,所以找不到Java类。
解决方案:
把ES搬到新用户的家目录以内即可。eg:
mv elasticsearch-7.3.1 /home/elasticsearch
参考文章:
Elasticsearch启动问题小记
Linux系统里的家目录是什么意思
d: [1]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]
解决方案:
切换到root用户,编辑limits.conf添加如下内容,注意*不是注释,后面有空格的;
vi /etc/security/limits.conf
* soft nofile 65536
* hard nofile 65536
参考文章:
elasticsearch启动常见的几个报错
e: max number of threads [3818] for user [es] is too low, increase to at least [4096]
解决方案:
修改配置文件etc/security/limits.conf,增加配置,注意*不是注释,后面有空格的;
* soft nproc 4096
* hard nproc 4096
参考文章:
elasticsearch启动常见的几个报错
2、安装Kibana可视化工具:
和Kibana一样,下载,解压,然后去bin目录下执行./kibana --allow-root
,因为使用root用户启动会提示不允许使用root用户启动,所以命令后面加上--allow-root
a、Running Elastic without the Trial License
解决方案:
原因:kibana和elasticsearch整合的时候需要elasticsearch安全控制信息
解决:再elasticsearch的配置文件elasticsearch.yml中添加xpack.license.self_generated.type: basic
指定只提供基础认证信息,因为高级的认证要收费的,好像还有点贵。
参考文章:
Running Elastic without the Trial License
参考文档:
Elasticsearch中ik_max_word和ik_smart的区别
windows下安装Elasticsearch7.X,IK分词器
springboot整合elasticsearch7.2(基于官方high level client)