01_ES单点部署,集群部署,索引管理及kibana环境搭建
01. ES分布式搜索引擎
elasticsearch:一个开源的分布式搜索引擎,可以用来实现搜索、日志统计、分析、系统监控等功能
elastic stack(ELFK):是以elasticsearch为核心的技术栈,包括beats、Logstash、kibana、elasticsearch
kibana:Kibana与Elasticsearch的交互方式是各种不同的图表、表格、地图等,直观的展示数据,从而达到数据分析与可视化的目的
logstash:作为Elasicsearch常用的实时数据采集引擎,可以采集来自不同数据源的数据,并对数据进行处理后输出到多种输出源,是Elastic Stack的重要组成部分
FileBeat:是一个轻量级的日志收集处理工具(Agent),Filebeat占用资源少,适合于在各个服务器上搜集日志后传输给Logstash
02. ES环境部署
添加别名
[root@elk91 ~]# vim .bashrc
...
alias yy='egrep -v "^.*#|^$"'
...
[root@elk91 ~]# source .bashrc
02.1 下载并安装
02.1.1 下载ES
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.17.23-amd64.deb
02.1.2 安装ES
[root@elk91 ~]# dpkg -i elasticsearch-7.17.23-amd64.deb
02.2 部署单点ES
02.2.1 修改配置文件
[root@elk91:~]# yy /etc/elasticsearch/elasticsearch.yml
cluster.name: oldboyedu-linux94 # 集群名称
path.data: /var/lib/elasticsearch # 数据存放位置
path.logs: /var/log/elasticsearch # 日志存放位置
network.host: 0.0.0.0 # 服务监听的IP地址
http.port: 9200 # 服务监听的端口号
discovery.type: single-node # 集群模式设置为单点模式
[root@elk91:~]#
02.2.2 配置开机自启动并查看端口号
[root@elk91:~]# systemctl enable --now elasticsearch.service
[root@elk91:~]# ss -nlp | egrep "9200|9300"
tcp LISTEN 0 4096 *:9200 *:* users:(("java",pid=3137,fd=293))
tcp LISTEN 0 4096 *:9300 *:* users:(("java",pid=3137,fd=291))
#9200:为ES对外可访问端口
#9300:为ES对内集群数据传输的端口
02.2.3 测试
[root@elk91:~]# curl 10.0.0.91:9200
查看ES集群节点
``` bash
[root@elk91:~]# curl 10.0.0.91:9200/_cat/nodes

02.3 部署集群ES
先分别下载并安装ES,使用3台ES做集群
02.3.1 修改配置文件
[root@elk91:~]# yy /etc/elasticsearch/elasticsearch.yml
cluster.name: oldboyedu-linux94
path.data: /var/lib/elasticsearch
path.logs: /var/log/elasticsearch
network.host: 0.0.0.0
http.port: 9200
discovery.seed_hosts: ["10.0.0.91", "10.0.0.92","10.0.0.93"]
[root@elk91:~]#
在91上,将ES配置文件传给92,93
[root@elk91:~]# scp /etc/elasticsearch/elasticsearch.yml 10.0.0.92:/etc/elasticsearch/
[root@elk91:~]# scp /etc/elasticsearch/elasticsearch.yml 10.0.0.93:/etc/elasticsearch/
02.3.2 分别启动
[root@elk91 ~]# systemctl enable --now elasticsearch
[root@elk92 ~]# systemctl enable --now elasticsearch
[root@elk93 ~]# systemctl enable --now elasticsearch
02.3.3 验证集群是否启动成功
[root@elk93:~]# curl 10.0.0.93:9200/_cat/nodes
10.0.0.93 44 97 9 0.36 0.29 0.16 cdfhilmrstw - elk93
10.0.0.92 14 95 19 0.62 0.49 0.25 cdfhilmrstw - elk92
10.0.0.91 22 95 30 0.68 0.59 0.34 cdfhilmrstw * elk91
[root@elk93:~]#
如果在同一集群中,则cluster_uuid都相同
[root@elk93:~]# for i in 91 92 93; do curl -s 10.0.0.$i:9200 | grep cluster_uuid;done
"cluster_uuid" : "vwET69HCTPOdN8Jjkgw5DQ",
"cluster_uuid" : "vwET69HCTPOdN8Jjkgw5DQ",
"cluster_uuid" : "vwET69HCTPOdN8Jjkgw5DQ",
[root@elk93:~]#
03. ES相关术语
-
索引: index
一个ES集群可以有多个索引,索引是用户进行数据读写的逻辑单元。 -
分片: shard
- 一个索引最少对应一个分片,实际工作中一个索引尽量对应多个分片,以便于数据的分布式存储。
- 同一个分片只能属于同一个节点。
-
副本: replica 对分片进行备份的副本分片。副本和分片不能在同一个节点上。
-
文档: document 实际用户存储的数据。
-
源数据: 用户实际存储的数据。
-
元数据: 用于描述源数据的数据。
-
分配: allocation 指的是将索引的不同分片分配到整个集群的过程。
04. ES索引API管理实战
04.1 创建索引
04.1.1 ES默认创建1分片和1副本
[root@elk91:~]# curl -X PUT 10.0.0.92:9200/oldboyedu-linux001
{"acknowledged":true,"shards_acknowledged":true,"index":"oldboyedu-linux001"}
[root@elk91:~]#
[root@elk91:~]# curl 10.0.0.92:9200/_cat/indices?v
health status index uuid pri rep docs.count docs.deleted store.size pri.store.size
green open .geoip_databases GK8-ceIURmGpR2Jmd43JLQ 1 1 40 0 74.6mb 37.3mb
green open oldboyedu-linux001 PyzDgy_tTZGKY6t5vBWCzg 1 1 0 0 454b 227b
[root@elk91:~]#
### 04.1.2 ES创建索引时可以自定义分片和副本
``` bash
创建3分片,0副本
[root@elk91:~]# curl -X PUT 'http://10.0.0.91:9200/oldboyedu-linux002' \
-H 'Content-Type: application/json' \
-d '{ "settings": { "number_of_shards": 3, "number_of_replicas": 0 } }'
[root@elk91:~]#
## 04.2 查看索引
``` bash
[root@elk91:~]# curl 10.0.0.92:9200/_cat/indices?v
04.3 删除索引
[root@elk91:~]# curl -X DELETE 'http://10.0.0.91:9200/oldboyedu-linux001'
删除所有索引(禁用)
[root@elk91 ~]# curl -X DELETE 'http://10.0.0.91:9200/*'
04.4 修改索引
修改索引的副本数为1
[root@elk91 ~]# curl -X PUT 'http://10.0.0.91:9200/oldboyedu-linux002/_settings' \
-H 'Content-Type: application/json' \
-d '{
"number_of_replicas": 1
}'
05. ES的API验证数据的存储和读取
05.1 写入测试数据
curl --location --request POST 'http://10.0.0.91:9200/_bulk' \
--header 'Content-Type: application/json' \
--data-raw '{"index" : { "_index" : "oldboyedu-linux94-xiyouji"} }
{"name": "孙悟空","hobby": ["蟠桃","紫霞仙子","人参果"]}
{"index" : { "_index" : "oldboyedu-linux94-xiyouji"} }
{"name": "猪八戒","hobby": ["嫦娥","高小姐","蜘蛛精"]}
{"index" : { "_index" : "oldboyedu-linux94-xiyouji"} }
{"name": "沙和尚","hobby": ["唐僧肉","挑行李"]}
{"index" : { "_index" : "oldboyedu-linux94-xiyouji"} }
{"name": "唐三藏","hobby": ["女儿国","人参果"]}
'
05.2 查询数据
[root@elk91:~]# curl 10.0.0.92:9200/_cat/indices?v
health status index uuid pri rep docs.count docs.deleted store.size pri.store.size
green open .geoip_databases GK8-ceIURmGpR2Jmd43JLQ 1 1 40 0 74.6mb 37.3mb
green open oldboyedu-linux002 ZbJCzj0OSpiEiZkfLCeLpg 3 1 0 0 1.3kb 681b
green open oldboyedu-linux94-xiyouji uCdZmfLIRwCRk5reEF_9vg 1 1 4 0 10.6kb 5.3kb
05.2.1 查询所有数据
[root@elk91 ~]# apt -y install jq
[root@elk91 ~]# curl -s http://10.0.0.91:9200/oldboyedu-linux94-xiyouji/_search | jq
05.2.2 查询指定数据
curl -s -X GET 'http://10.0.0.91:9200/oldboyedu-linux94-xiyouji/_search' \
-H 'Content-Type: application/json' \
-d '{
"query": {
"match": {
"hobby": "人参果"
}
}
}' | jq
06. 部署kibana
06.1 下载并安装
[root@elk91:~]# wget https://artifacts.elastic.co/downloads/kibana/kibana-7.17.23-amd64.deb
[root@elk91:~]# dpkg -i kibana-7.17.23-amd64.deb
06.2 修改配置文件并启动
[root@elk91:~]# vim /etc/kibana/kibana.yml
[root@elk91:~]# yy /etc/kibana/kibana.yml
server.port: 5601
server.host: "0.0.0.0"
elasticsearch.hosts: ["http://10.0.0.91:9200","http://10.0.0.92:9200","http://10.0.0.93:9200"]
i18n.locale: "zh-CN"
[root@elk91:~]#
[root@elk91:~]# systemctl enable --now kibana.service
06.3 创建索引模式并查看索引内容


浙公网安备 33010602011771号