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

image-20250410140955576

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

    1. 一个索引最少对应一个分片,实际工作中一个索引尽量对应多个分片,以便于数据的分布式存储。
    2. 同一个分片只能属于同一个节点。
  • 副本: 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 创建索引模式并查看索引内容

image-20250516170340121

posted @ 2025-06-09 10:18  Sempiterno  阅读(341)  评论(0)    收藏  举报