此文章敢说全网最新,无坑,且详细
官网下载地址:https://www.elastic.co/cn/downloads/elasticsearch
镜像下载地址,logstash 用不上
elasticsarch :https://mirrors.huaweicloud.com/elasticsearch/7.6.2/
kibana:https://mirrors.huaweicloud.com/kibana/7.6.2/
logstash:https://mirrors.huaweicloud.com/logstash/7.6.2/
JDK下载地址:https://www.oracle.com/java/technologies/javase-jdk14-downloads.html
[root@localhost ~]# tar -zxvf jdk-14.0.1_linux-x64_bin.tar.gz -C /usr/src
[root@localhost ~]# mv /usr/src/jdk-14.0.1/ /usr/local/java
[root@localhost ~]# echo 'export JAVA_HOME=/usr/local/java
> export JRE_HOME=/usr/local/java/jre
> export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib
> export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin ' >> /etc/profile
[root@localhost ~]# rm -rf /usr/bin/java
[root@localhost ~]# source /etc/profile
ntpdate ntp.ntsc.ac.cn
查看: ulimit -n
临时设置: ulimit -HSn 2048
通过配置文件永久设置:/etc/security/limits.conf
ES 要求系统文件描述符 > 65535
#软限制文件数 soft nofile
[root@node1 ~]# echo '* soft nofile 655360' >> /etc/security/limits.conf
#硬限制文件数
[root@node1 ~]# echo '* hard nofile 655360' >> /etc/security/limits.conf
#软限制用户可用进程数 soft nproc
[root@node1 ~]# echo '* soft nproc 2048' >> /etc/security/limits.conf
#硬限制用户可用进程数 hard nproc
[root@node1 ~]# echo '* hard nproc 4096' >> /etc/security/limits.conf
#JVM能够使用的最大线程数
[root@node1 ~]# echo 'vm.max_map_count=655360' >> /etc/sysctl.conf
[root@node1 ~]# sysctl -p
vm.max_map_count = 655360
#root 用户下直接生效 ulimit
echo 'root soft nofile 655360
root hard nofile 655360
root soft nproc 655360
root hard nproc 655360 ' >> /etc/security/limits.conf
重新登录,或者重新连接 xshell
--- bin 启动文件
--- config 配置文件
- elasticsearch.yml #ES 主配置文件
- jvm.options #java 虚拟机配置
- log4j2.properties #日志文件配置
--- lib #jar包文件
--- modules #功能模块
--- plugins #插件 (ik插件的存放目录)
--- logs #日志输出文件
--- data #data节点的索引数据存放目录
主机 | IP | 节点 |
---|---|---|
ES_1 | 192.168.168.4 | Master节点 |
ES_2 | 192.168.168.5 | Data节点 |
ES_3 | 192.168.168.6 | Date节点 |
创建用户
[root@node2 ~]# useradd es
安装 es 软件包
[root@node2 ~]# tar -zxvf elasticsearch-7.6.2-linux-x86_64.tar.gz
[root@node2 ~]# cp -rf elasticsearch-7.6.2 /usr/local/es
设置目录属主属组
[root@node2 ~]# chown -R es:es /usr/local/es/ /es
修改 Master节点 elasticsearch.yml 主配置文件
[root@node1 ~]# vim /usr/local/es/config/elasticsearch.yml
---
17 cluster.name: my-application #集群名称
23 node.name: mster #节点名称
# node.data: true #真实环境下不要既当数据节点又当管理
25 node.master: true
------ Paths -------
35 path.data: /usr/local/es/data #存放数据目录
39 path.logs: /usr/local/es/logs #存放日志目录
------ Network ------
network.host: 192.168.168.4 # 本机IP地址
http.port: 9200 # 管理端口,对外端口
transport.tcp.port: 9300 # 集群间通讯端口,数据端端口
------ Discovery ------
71 discovery.seed_hosts: ["192.168.168.4","192.168.168.5","192.168.168.6"]
#将集群内所有数据节点主机加到管理节点上
75 discovery.zen.minimum_master_nodes: 2
#存在几个存活有选举资格的数据节点才可以进行选举
76 discovery.zen.ping_timeout: 120s #最大超时时间
cluster.initial_master_nodes: ["192.168.168.4"] #填写主节点地址,或者 localhost/127.0.0.1都行
------ Gateway ------
84 gateway.recover_after_nodes: 3 #集群重启时有3个节点正常开始数据恢复
85 gateway.recover_after_time: 5m #等待5分钟
86 gateway.recover_after_data_nodes: 2 #等待有3个节点有数据恢复,等5分钟。如果5分钟之后没有3个节点正常,那么2个节点也数据恢复
#--- 末尾,跨域访问
http.cors.enabled: true #允许跨域访问
http.cors.allow-origin: "*" #允许所有主机访问
修改 Data 节点 elasticsearch.yml 主配置文件
[root@node1 ~]# vim /usr/local/es/config/elasticsearch.yml
---
17 cluster.name: my-application #集群名称
23 node.name: node-1 #节点名称
24 node.data: true #数据节点
network.host: 192.168.168.5 # 本机IP地址
[root@node1 ~]# vim /usr/local/es/config/elasticsearch.yml
---
17 cluster.name: my-application #集群名称
23 node.name: node-2 #节点名称
24 node.data: true #数据节点
network.host: 192.168.168.6 # 本机IP地址
启动ES
#启动集群
[root@node1 ~]# su es
[es@node1 root]$ /usr/local/es/bin/elasticsearch
-------------------------------------------------------------
#查看集群当前状态
[root@node1 ~]# curl http://192.168.168.9:9200/_cluster/state?pretty
Head 插件可以根 ES-Master 节点放在一起。
gihub下载地址:https://github.com/mobz/elasticsearch-head
1、准备 node.JS 环境
[root@es_1 ~]# tar -xvf node-v12.18.2-linux-x64.tar.xz
[root@es_1 ~]# mkdir /usr/local/node_js
[root@es_1 ~]# mv node-v12.18.2-linux-x64/* /usr/local/node_js
[root@es_1 ~]# ls /usr/local/node_js
bin CHANGELOG.md include lib LICENSE README.md share
[root@es_1 ~]# echo 'export PATH=$PATH:/usr/local/node_js/bin' >> /etc/profile
[root@es_1 ~]# source /etc/profile
[root@es_1 ~]# node -v
v12.18.2
[root@es_1 ~]# npm -v
6.14.5
2、安装 Head - web 依赖插件
[root@es_1 ~]# git clone git://github.com/mobz/elasticsearch-head.git
[root@es_1 ~]# cp -rf elasticsearch-head-master /usr/local/ES_head
[root@es_1 ~]# cd /usr/local/ES_head/
[root@es_1 ES_head]# npm install -g cnpm --registry=https://registry.npm.taobao.org
[root@es_1 ES_head]# cnpm install
3、解决 Head - web 的跨域问题
vim /usr/local/es/config/elasticsearch.yml 主配置文件
#--- 末尾,添加跨域访问
http.cors.enabled: true #允许跨域访问
http.cors.allow-origin: "*" #允许所有主机访问
4、 启动 Head - web
[root@es_1 ~]# cd /usr/local/ES_head
[root@es_1 ES_head]# npm run start
> [email protected] start /usr/local/ES_head
> grunt server
Running "connect:server" (connect) task
Waiting forever...
Started connect web server on http://localhost:9100
5、访问 Head -web
http://192.168.168.4:9100
Head-web 插件,把他当成数据库来使用,它最优秀的功能就是查看集群状态,集群分片情况,以及索引库的数据内容。查询功能很垃圾,有更好的kibana
建立索引,索引其实就是 ElasticSearch 存储数据的库,可以理解成数据库。
一个索引(数据库)都索引了哪些数据呢,都存储了哪些东西呢,在资料浏览中可以看到
查询不要用 Head 自带的复合查询,到 kibana 里面去查询,比这个功能强大。
Kibana 是一个针对 ElasticSearch 的开源分析以及可视化平台,用来搜索、查看交互存储在 ElasitcSearch 索引中的数据。
使用 Kibana,可以通过各种图表进行高级数据分析以及展示。
kibana 让海量数据更容易理解。它操作简单,基于浏览器的用户界面可以快速创建仪表板(dashboard)实时显示 ElasticSearch 查询动态。设置 Kibana非常简单。无需编码或者额外的基础架构,几分钟内就可以完成 Kibana 安装并启动 ElasticSearch 索引检测。
官网下载地址:https://www.elastic.co/downloads/kibana
需要注意 kibana 版本要与 ES 版本相对应,可以安装到 Master节点上。
[root@es_1 src]# tar -zxvf kibana-7.6.2-linux-x86_64.tar.gz -C /usr/src/
[root@es_1 src]# cp -rf kibana-7.6.2-linux-x86_64/ /usr/local/kibana
[root@es_1 kibana]# useradd kibana
[root@es_1 kibana]# chown -R kibana:kibana /usr/local/kibana/
修改配置文件 /usr/local/kibana/config/kibana.yml
server.port: 5601
server.host: "192.168.168.4"
elasticsearch.hosts: ["http://192.168.168.4:9200"]
i18n.locale: "zh-CN" #汉化工具你要是英语特别NB,可以不改这个
启动 kibana,不能使用root用户
[root@es_1 kibana]# su kibana
[kibana@es_1 kibana]$/usr/local/kibana/bin/kibana
所有的查询命令都在这个开发工具里写
这个工具在页面最左边菜单栏,的倒数第二个
分词:把一段中文或者英文,划分成为一个个的关键字,我们在搜索的时候会把自己的信息进行分词,会把数据库中或者索引库中的数据进行分词。
然后进行一个匹配,默认的中文分词是将每个字看成一个词,比如“孙海铭最帅”,会被分解成“孙”,“海”,“铭”,“最”,“帅”。这显然是不符合要求的,所以需要 ik 中文分词器来解决这个问题。
IK 分词算法:
ik_smart:最少切分
ik_max_word:最精细切分
github 安装地址:https://github.com/medcl/elasticsearch-analysis-ik/releases
注意:ik 分词器版本要与 ES相对应
[root@es_1 ~]# unzip elasticsearch-analysis-ik-7.6.2.zip -d /usr/local/es/plugins/ik
[root@es_1 ~]# ll /usr/local/es/plugins/ik/ #此目录需要重新确认属主属组
[root@es_1 ~]# ll /usr/local/es/config/elasticsearch.keystore #此文件
elasticsearch-plugin list 可以查看所有安装的插件
[root@es_1 es]# bin/elasticsearch-plugin list
ik
如果您是运维人员,想要深入学习 ES 的索引查询、索引增删改查、请继续看我的 Kibana 分词器详细操作步骤。