elasticsearch的安装和集群的搭建
1.下载elasticsearch压缩包文件,历史版本下载 :
https://www.elastic.co/cn/downloads/past-releases/
2. 将压缩包上传至linux,解压到指定目录:
创建文件夹 mkdir elasticsearch
tar -zxvf elasticsearch-7.3.2-linux-x86_64.tar.gz -C /home/centos/elasticsearch
3. 查看配置文件:(虚拟机内存按需分配)
vi config/jvm.options
vi config/elasticsearch.yml elasticsearch的配置文件(单节点)
#集群名称 cluster.name: sinochem-es #节点名称 node.name: es-0 #是不是有资格主节点 #node.master: true #是否存储数据 node.data: true #最大集群节点数 #node.max_local_storage_nodes: 3 #ip地址(外网可访问使用 0.0.0.0) network.host: 0.0.0.0 #端口 http.port: 9200 #内部节点之间沟通端口 #transport.tcp.port: 9300 #es7.x 之后新增的配置,节点发现 #discovery.seed_hosts: ["localhost:9300", "localhost:9301", "localhost:9302"] #es7.x 之后新增的配置,初始化一个新的集群时需要此配置来选举master #cluster.initial_master_nodes: ["es-0", "es-1", "es-2"] #数据和存储路径 path.data: /home/centos/elasticsearch-master/data path.logs: /home/centos/elasticsearch-master/logs # 开启跨域 http.cors.enabled: true # 所有人访问 http.cors.allow-origin: "*" #用安全性 xpack.security.enabled: false
4. 启动单机版elasticsearch:
1 首先需要创建es用户,root用户无法启动
2 创建es用户:useradd es
3 创建密码:passwd es
4 需要给elasticsearch赋予es用户的执行权限:
chown -R es:es /home/centos/elasticsearch-master/
5 启动:
进入到elasticsearch的bin目录下,执行 ./elasticsearch
6 访问 http://ip:9200/
6 后台启动elasticsearch
bin目录下 执行 ./elasticsearch -d
查看进程: ps aux|grep elasticsearch
3. elasticsearch集群的搭建和配置:
1 将elasticsearch的安装包分别复制3份
cp -R elasticsearch-master elasticsearch-node1
2 分别修改3个节点的配置文件 vi config/elasticsearch.yml
master节点(名字有误 意思是第一个节点 不能准确的说是master)
#集群名称 cluster.name: xxx-es #节点名称 node.name: es-0 #是不是有资格主节点 node.master: true #是否存储数据 node.data: true #最大集群节点数 node.max_local_storage_nodes: 3 #ip地址 network.host: 0.0.0.0 #端口 http.port: 9200 #内部节点之间沟通端口 transport.tcp.port: 9300 #es7.x 之后新增的配置,节点发现 discovery.seed_hosts: ["localhost:9300", "localhost:9301", "localhost:9302"] #es7.x 之后新增的配置,初始化一个新的集群时需要此配置来选举master cluster.initial_master_nodes: ["es-0", "es-1", "es-2"] #数据和存储路径 path.data: /home/centos/elasticsearch-master/data path.logs: /home/centos/elasticsearch-master/logs # 开启跨域 http.cors.enabled: true # 所有人访问 http.cors.allow-origin: "*" #用安全性 xpack.security.enabled: false
node1节点(集群中的第二个节点)
#集群名称 cluster.name: xxx-es #节点名称 node.name: es-1 #是不是有资格主节点 node.master: true #是否存储数据 node.data: true #最大集群节点数 node.max_local_storage_nodes: 3 #ip地址 network.host: 0.0.0.0 #端口 http.port: 9201 #内部节点之间沟通端口 transport.tcp.port: 9301 #es7.x 之后新增的配置,节点发现 discovery.seed_hosts: ["localhost:9300", "localhost:9301", "localhost:9302"] #es7.x 之后新增的配置,初始化一个新的集群时需要此配置来选举master cluster.initial_master_nodes: ["es-0", "es-1", "es-2"] #数据和存储路径 path.data: /home/centos/elasticsearch-master/data path.logs: /home/centos/elasticsearch-master/logs # 开启跨域 http.cors.enabled: true # 所有人访问 http.cors.allow-origin: "*" #用安全性 xpack.security.enabled: false
node-2节点(集群中的第三个节点)
#集群名称 cluster.name: xxx-es #节点名称 node.name: es-2 #是不是有资格主节点 node.master: true #是否存储数据 node.data: true #最大集群节点数 node.max_local_storage_nodes: 3 #ip地址 network.host: 0.0.0.0 #端口 http.port: 9202 #内部节点之间沟通端口 transport.tcp.port: 9302 #es7.x 之后新增的配置,节点发现 discovery.seed_hosts: ["localhost:9300", "localhost:9301", "localhost:9302"] #es7.x 之后新增的配置,初始化一个新的集群时需要此配置来选举master cluster.initial_master_nodes: ["es-0", "es-1", "es-2"] #数据和存储路径 path.data: /home/centos/elasticsearch-master/data path.logs: /home/centos/elasticsearch-master/logs # 开启跨域 http.cors.enabled: true # 所有人访问 http.cors.allow-origin: "*"
注意:本集群为单机版的集群搭建,三个节点中的cluster.name必须保持一致,node.name保持不同
3 分别启动三个 elasticsearch
4 查看集群是否搭建成功
访问 http://ip:9201/_cat/health?v
注:es节点启动过程中可能遇到的错误
Could not rename log file 'logs/gc.log' to 'logs/gc.log.09' (Permission denied). Invalid -Xlog option '-Xlog:gc*,gc+age=trace,safepoint:file=logs/gc.log:utctime,pid,tags:filecount=32,filesize=64m', see error log for details. Error: Could not create the Java Virtual Machine.
解决:root下执行 chmod 777 -R logs 这里根据你所挂载的目录要放开相应的权限
Exception in thread "main" org.elasticsearch.bootstrap.BootstrapException: java.nio.file.AccessDeniedException: /data/elasticSearch/elasticsearch-8.0.1-node-2/config/elasticsearch.keystore Likely root cause: java.nio.file.AccessDeniedException: /data/elasticSearch/elasticsearch-8.0.1-node-2/config/elasticsearch.keystore
解决:
cd /data/elasticSearch/elasticsearch-8.0.1-node-2/config
chown -R es:es elasticsearch.keystore
ERROR: [1] bootstrap checks failed [1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
解决:
vi /etc/sysctl.conf
添加 一行 vm.max_map_count=655360
加载参数 sysctl -p
kibana的安装
Kibana是一个针对ElasticSearch的开源分析及可视化平台,用来搜索、查看交互存储在Elasticsearch索引中的数据。使用Kibana ,可以通过各种图表进行高级数据分析及展示。Kibana让海量数据更容易理解。它操作简单,基于浏览器的用户界面可以快速创建仪表板( dashboard )实时显示Elasticsearch查询动态。
1. Kibana的下载(版本必须与ElasticSearch一致)
历史版本下载:https://www.elastic.co/cn/downloads/past-releases/
将压缩包上传至linux
2. Kibana的安装
1 mkdir kibana 创建一个文件夹
2 解压到文件夹
tar -zxvf kibana-7.3.2-linux-x86_64.tar.gz -C /home/centos/kibana
2 修改kibana 的配置文件
vi config/kibana.yml
server.host: "0.0.0.0" server.port: 5601 elasticsearch.hosts: ["http://localhost:9200","http://localhost:9201","http://localhost:9202"] #elasticsearch.hosts: ["http://localhost:9200","http://localhost:9201"] #elasticsearch.username: "es" #elasticsearch.password: "es" #kibana.index: ".kibana" i18n.locale: "zh-CN"
3. Kibana的启动
1 给kibana安装目录赋予用户权限,不能使用root用户启动
chown -R es:es /home/centos/kibana/kibana-7.3.2-linux-x86_64
2 运行
bin目录下运行 ./kibana
后台运行 nohup ./kibana &
查看进程: ps -ef | grep node
3 访问
http://ip:5601/app/kibana
使用kibana访问节点信息
GET _cat/health?v
ik分词器的安装
1. ik分词器(中文分词器)
分词:即把一段中文或者别的划分成一个个的关键字,我们在搜索时候会把自己的信息进行分词,会把数据库中或者索引库中的数据进行分词,然后进行一一个匹配操作,默认的中文分词是将每个字看成一个词(不使用用IK分词器的情况下),比如“周同学还不发专辑”会被分为”周”,”同”,”学”,”还”,”不”,”发”,”专”,”辑” ,这显然是不符合要求的,所以我们需要安装中文分词器ik来解决这个问题
IK提供了两个分词算法: ik_smart和ik_max_word ,其中ik_smart为最少切分, ik_max_word为最细粒度划分
1. ik分词器的下载与安装
1 下载的版本要与ElasticSearch版本对应
2 下载地址:https://github.com/medcl/elasticsearch-analysis-ik/releases
3 安装:
将压缩包上传至linux服务器
使用unzip解压,没有unzip命令使用 yum install -y unzip 安装
在elasticsearch的plugins目录下新建ik目录,mkdir ik
使用命令解压 unzip elasticsearch-analysis-ik-7.3.2.zip -d elasticsearch-master/plugins/ik/
4 使用es账户重启es ./elasticsearch -d
5 查看效果
文章持续更新,可以关注下方公众号或者微信搜一搜「 最后一支迷迭香 」第一时间阅读,获取更完整的链路资料。