本文主要讲述elasticsearch6.6.2的安装和升级,升级是升级到6.8.23,6.8.23版本为elasticsearch6.X系列的稳定版,并可以通过生成证书、配置ES的SSL和密码,实现ES的安全连接,后续博主会在springboot集成elasticsearch6.X中讲到这两种版本的区别。
下载路径:
elasticsearch6.6.2
elasticsearch6.8.23
kibana 6.8.23
一、安装JDK
1、上传jdk安装包(资料/安装包中的jdk-8u171-linux-x64.tar.gz)并解压
# 进入opt目录
cd /opt
tar -zxvf jdk-8u171-linux-x64.tar.gz
2、设置环境变量
vi /etc/profile
JAVA_HOME=/opt/jdk1.8.0_171
PATH=$JAVA_HOME/bin:$PATH
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME
export PATH
export CLASSPATH
3、使得环境变量生效
source /etc/profile
4、验证
java -version
二、Elasticsearch安装
1、上传资料/安装包的elasticsearch-6.6.2.tar.gz
2、解压
cd /opt
tar -zxvf elasticsearch-6.6.2.tar.gz
3、修改config/elasticsearch.yml文件
# 进入
cd config
vi elasticsearch.yml
# 指定本机ip地址
network.host: 192.168.66.100
# 指定http端口
http.port: 9200
# 配置是否允许跨域
http.cors.enabled: true
# 允许哪些域跨域
http.cors.allow-origin: "*"
说明:
- 域:http://ip/port
- 跨域是浏览器的同源保护策略,默认是不允许一个域访问另一个域,因为域下面保存了cookie信息。
4、启动elasticsearch
cd elasticsearch-6.6.2
bin/elasticsearch
解决方案:
这是出于系统安全考虑设置的条件。由于ElasticSearch可以接收用户输入的脚本并且执行,为了系统安全考虑, 建议创建一个单独的用户用来运行ElasticSearch。及elsearch用户
#创建elsearch用户组
groupadd elsearch
#创建elsearch用户,并-g分配一个用户组,-p指定密码
useradd elsearch -g elsearch -p elasticsearch
更改elasticsearch文件夹及内部文件的所属用户及组为elsearch:elsearch
cd /opt
chown -R elsearch:elsearch elasticsearch-6.6.2
5、切换用户到elsearch
中,执启动
# 切换用户
su elsearch
# 进入es目录
cd elasticsearch-6.6.2
# 执行
bin/elasticsearch
# 或者后台启动,会将日志内容输出到当前目录的nohup.out文件中,可以通过tail -f nohup.out 查看日志信息
nohup bin/elasticsearch &
启动成功! 浏览器访问:http://192.168.66.100:9200/
如果访问失败请记得关闭防火墙
# 停止firewall
systemctl stop firewalld
# 禁止firewall开机启动
systemctl disable firewalld
二、Elasticsearch启动常见的几个报错
2019.02.12 16:24:31字数 242阅读 4401
[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
* soft nproc 4096
* hard nproc 4096
[2]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
修改/etc/sysctl.conf文件,增加配置vm.max_map_count=262144
vi /etc/sysctl.conf
vm.max_map_count=262144
# 执行命令sysctl -p生效
sysctl -p
[3]:system call filters failed to install; check the logs and fix your configuration or disable system call filters at your own risk
问题原因:因为Centos6不支持SecComp,而ES5.2.1默认bootstrap.system_call_filter为true进行检测,所以导致检测失败,失败后直接导致ES不能启动
解决方法:在elasticsearch.yml中配置bootstrap.system_call_filter为false,注意要在Memory下面:
cd /opt/elasticsearch-6.6.2/config
vi elasticsearch.yml
# 是否锁住内存,centos6 版本问题
bootstrap.memory_lock: false
# 是否允许系统调用, centos6 版本问题
bootstrap.system_call_filter: false
三、Kibana安装
1、什么是Kibana
Kibana是一个针对Elasticsearch的开源分析及可视化平台,用来搜索、查看交互存储在Elasticsearch索引中的数据。使用Kibana,可以通过各种图表进行高级数据分析及展示。
Kibana让海量数据更容易理解。它操作简单,基于浏览器的用户界面可以快速创建仪表板(dashboard)实时显示Elasticsearch查询动态。
2、上传kibana
CRT中克隆一个窗口,上传Kibana
cd /opt
3、解压kibana
# 解压到/opt 目录下
tar -zxzf kibana-6.6.2-linux-x86_64.tar.gz
4、修改kibana配置
vim /opt/kibana-6.6.2-linux-x86_64/config/kibana.yml
# http访问端口
server.port: 5601
# ip地址,0.0.0.0表示可远程访问
server.host: "0.0.0.0"
# kibana服务名
server.name: "kibana-itcast"
# elasticsearch地址
elasticsearch.hosts: ["http://192.168.66.100:9200"]
# 请求elasticsearch超时时间,默认为30000,此处可根据情况设置
elasticsearch.requestTimeout: 99999
4、启动kibana
kibana 7版本,不建议使用root用户启动,如果用root启动,需要加–allow-root参数,我们使用的是kibana6,不需要添加
# 切换到kibana的bin目录
cd /opt/kibana-7.4.0-linux-x86_64/bin
# 启动
./kibana
5、访问kibana
1.浏览器输入http://192.168.66.100:5601/,如下图:
看到这个界面,说明Kibanan已成功安装。
Discover
:可视化查询分析器
Visualize
:统计分析图表
Dashboard
:自定义主面板(添加图表)
Timelion
:Timelion是一个kibana时间序列展示组件(暂时不用)
Dev Tools
:Console控制台(同CURL/POSTER,操作ES代码工具,代码提示,很方便)
Management
:管理索引库(index)、已保存的搜索和可视化结果(save objects)、设置 kibana 服务器属性。
四、安装IK分词器
1、安装IK分词器
1)上传IK分词器压缩包
cd /opt/elasticsearch-6.6.2/plugins/
# 新建目录
mkdir analysis-ik
# 进入目录
cd analysis-ik
# 上传压缩包,自行上传
由于这里是zip包不是gz包,所以我们需要使用unzip命令进行解压,如果本机环境没有安装unzip,请执行:
yum install zip
yum install unzip
2)解压IK分词器压缩包
unzip elasticsearch-analysis-ik-6.6.2.zip
记得一定要重启Elasticsearch!!!
2、使用IK分词器
IK分词器有两种分词算法:ik_max_word和ik_smart。
1)ik_max_word
会将文本做最细粒度的拆分,比如会将“乒乓球明年总冠军”拆分为“乒乓球、乒乓、球、明年、总冠军、冠军。
#方式一 ik_max_word
GET /_analyze
{
"analyzer": "ik_max_word",
"text": "乒乓球明年总冠军"
}
ik_max_word分词器执行如下:
{
"tokens" : [
{
"token" : "乒乓球",
"start_offset" : 0,
"end_offset" : 3,
"type" : "CN_WORD",
"position" : 0
},
{
"token" : "乒乓",
"start_offset" : 0,
"end_offset" : 2,
"type" : "CN_WORD",
"position" : 1
},
{
"token" : "球",
"start_offset" : 2,
"end_offset" : 3,
"type" : "CN_CHAR",
"position" : 2
},
{
"token" : "明年",
"start_offset" : 3,
"end_offset" : 5,
"type" : "CN_WORD",
"position" : 3
},
{
"token" : "总冠军",
"start_offset" : 5,
"end_offset" : 8,
"type" : "CN_WORD",
"position" : 4
},
{
"token" : "冠军",
"start_offset" : 6,
"end_offset" : 8,
"type" : "CN_WORD",
"position" : 5
}
]
}
2)ik_smart
会做最粗粒度的拆分,比如会将“乒乓球明年总冠军”拆分为乒乓球、明年、总冠军。
#方式二ik_smart
GET /_analyze
{
"analyzer": "ik_smart",
"text": "乒乓球明年总冠军"
}
ik_smart分词器执行如下:
{
"tokens" : [
{
"token" : "乒乓球",
"start_offset" : 0,
"end_offset" : 3,
"type" : "CN_WORD",
"position" : 0
},
{
"token" : "明年",
"start_offset" : 3,
"end_offset" : 5,
"type" : "CN_WORD",
"position" : 1
},
{
"token" : "总冠军",
"start_offset" : 5,
"end_offset" : 8,
"type" : "CN_WORD",
"position" : 2
}
]
}
由此可见 使用ik_smart可以将文本"text": "乒乓球明年总冠军"分成了【乒乓球】【明年】【总冠军】
这样看的话,这样的分词效果达到了我们的要求。
五、升级到6.8.23
1.解压压缩包
cd /opt
tar -zxvf elasticsearch-6.8.23.tar.gz
1.1 生成证书
在es项目目录bin中,运行命令
./elasticsearch-certutil ca
直接enter,再输入下面的
./elasticsearch-certutil cert --ca elastic-stack-ca.p12
设置密码:123456
密码复杂度自己设定
会生成两个证书
elastic-cerificates.p12
elastic-stack-ca.p12
将两个文件移动到es中config文件夹
1.2 配置密码
编辑es配置文件elasticsearch.yml,新增以下配置
cluster.name: "elasticsearch-cluster"
network.host: 0.0.0.0
http.port: 9200
http.cors.enabled: true
http.cors.allow-origin: "*"
http.cors.allow-headers: Authorization
#开启设置密码
xpack.security.enabled: true
##是否开启ssl证书秘钥
xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.keystore.path: /opt/elasticsearch-6.8.23/config/elastic-certificates.p12
xpack.security.transport.ssl.truststore.path: /opt/elasticsearch-6.8.23/config/elastic-certificates.p12
xpack.security.transport.ssl.keystore.password: 123456
xpack.security.transport.ssl.truststore.password: 123456
在es中bin目录,运行命令
./elasticsearch-setup-passwords interactive
会让你输入多个内置账户的密码,自己记录一下。这里同时修改证书路径,1.1中生成的p12证书绝对路径;
2
将elastic-cerificates.p12文件拷贝到/opt/gtzz/config/
3.升级kibana
配置:
server.port: 5601
server.host: "0.0.0.0"
server.name: "kibana"
#elasticsearch服务器地址端口
elasticsearch.hosts: ["http://192.168.66.100:9200"]
kibana.index: ".kibana"
#语言配置
i18n.locale: "zh-CN"
elasticsearch.username: "elastic"
elasticsearch.password: "123456"
xpack.reporting.encryptionKey: "a_random_string"
xpack.security.encryptionKey: "something_at_least_32_characters"
elasticsearch.requestTimeout: 99999