【运维知识大神篇】超详细的ELFK日志分析教程2(ES-head工具+Postman工具+ES的常用术语+ES状态颜色+JSON快速入门+ES中API使用方法+批量存储/读取练习)

本篇文章继续介绍ELFK日志分析,还是ES的相关内容,包括ES-head工具,Postman工具,ES常用术语、ES状态颜色、JSON快速入门、ES中API使用、批量存储/读取练习,带大家深入了解ES的功能和使用。

工具准备

一、ES-head工具

解压压缩包(文末有下载链接),生成文件夹,路径尽量不要用中文名称,在谷歌浏览器(其他浏览器也行,但是推荐谷歌)扩展程序里面加载已解压的扩展程序,选择文件夹

 打开空白界面,右上角点击扩展程序

更改主机IP和端口,点击链接,可以看到ES的信息

二、Postman工具 

双击打开postsman安装包文件(文末有下载链接),会自动安装,在桌面创建图标,打开后提示注册或登录,没有账号我们需要注册

点击注册按钮后弹出网页,在网页上进行注册即可

注册后后会给邮箱发右键,需要打开邮件点击验证一下 

验证好后我们关闭postman,再重新打开,可以看到我们的账号自动登录了

 如果弹出更新,不需要更新,新版不咋好用

我们新建一个工作区 

更改姓名,设置权限为自己可以访问

可以点击加号添加文件夹,更改名字 

右键文件夹可以添加请求 

 

输入URL,回车可以看到返回信息 

ES的常用术语

1、 索引(index):存储数据的逻辑单元,并不负责实际的数据存储。用户可以基于索引进行数据的读写。

2、分片(shard):一个索引最少有一个分片,数据存储在分片上。

3、副本(replica):一个分片可以有0个副本,如果一个分片的副本数为0,但该分片宕机时,则数据无法访问。

4、主分片(primary shard)与副本分片(replica shard):主分片可以对数据进行读写,副本分片只能进行读取,主分片出问题后,同一索引下的副本分片会立即切换成主分片,从只能读取变为可以读写,实现高可用。

5、文档(document)与JSON格式:在分片中存储的数据,对应的是JSON格式对象数据类型,而JSON格式就是文字的序列化,主机与主机间数据传输通常是使用JSON格式,之前有用xml和html,但是不够轻量,浪费带宽,而磁盘和内存之间传输是通过二进制格式文件。

ES状态颜色

ES集群健康值的颜色有三种


红色,集群处于不健康状态,表示部分主分片无法访问,意味着此时数据未全部加载,要么集群大规模宕机,要么就是集群启动时短暂出现;

黄色,集群处于亚健康状态,表示主分片可以正常访问,部分副本分片无法正常访问;

绿色,集群处于健康状态,表示主分片和副本分片均可以正常访问。

JSON快速入门

在进行api使用前,我们需要先了解json,因为api的post提交,基本都是json格式的,json格式可以提交所有的数据类型。

一、基础数据类型

字符串:"name" 、"age"、"123"、"true"

布尔值:true、false

数值:2023、3.14、9.18

空值:null

二、高级数据类型

数组:["2023",true,3.14,null]

对象:{"name":"koten","hobby":["Linux","K8s"]}

{

        "name":"koten",

        "hobby":["Linux","K8s"]

}                这种格式也可以,但是有空字符,会占用宽带资源,所以能见到一些网站用一行的json请求和一行html代码页面。

对象中前面的数据为元数据,是用于描述数据的数据,后面的数据为实际数据。

ES的API使用方法

由于外部访问ES数据需要http或https请求,所以我们在postman中列举这些请求,同时查看http请求效果

一、索引管理

1、查看

1、查看所有索引

GET http://10.0.0.101:19200/_cat/indices?v

2、查看单个索引的详细信息

GET http://10.0.0.101:19200/koten

2、创建

1、直接创建索引

PUT http://10.0.0.101:19200/koten

边框粗的切片为主切片,边框窄的切片为副本切片 

2、指定分片数创建索引

PUT http://10.0.0.101:19200/koten

{
    "settings": {
        "index": {
            "number_of_shards": "3"
        }
    }
}

3、指定分片数和副本数创建索引 

PUT http://10.0.0.101:19200/koten

{
    "settings": {
        "index": {
            "number_of_shards": "3",
            "number_of_replicas": "0"
        }
    }
}

3、修改

1、修改索引的副本数量

PUT http://10.0.0.101:19200/koten/_settings

{
    "number_of_replicas": "2"
}

注意:不允许动态修改分片的数量,因为文档储存的时候,会根据文档的id哈希值跟主分片数量取余决定它储存到哪个分片,倘若主文档的id哈希值是10,主分片数量是3,那么取余会得1,所以会储存进分片位置为1的分片中,如果更改了主分片位置,不管是减少还是增加,都会更改位置,位置更高意味着存进去的数据再取的时候取不出原来的数据,导致数据错乱,所以在定义主分片的时候一开始就要定义好,后续不能修改。

4、删除

1、通过es-head删除

2、通过curl删除

[root@ELK ~]# curl -X DELETE 10.0.0.101:19200/koten
{"acknowledged":true}

3、postman删除

可以选择删除单个索引也可以基于通配符删除索引

DELETE http://10.0.0.101:19200/koten    #删除单个索引

DELETE http://10.0.0.101:19200/ko*      #利用通配符删除索引

5、关闭

关闭索引,将无法进行读写操作,但是数据不会被删除,关闭前状态如下

POST http://10.0.0.101:19200/koten/_close

6、打开

打开索引,索引重新可以读写,默认是打开状态

POST http://10.0.0.101:19200/koten/_open

7、别名

别名的意义在于,存数据的时候可能不会只存到一个索引中,所以我们给这些索引取上别名,到时候取数据的时候,可以通过别名将他们都取出。

1、查看所有索引的别名

GET http://10.0.0.101:19200/_aliases

2、给索引添加别名

POST http://10.0.0.101:19200/_aliases

{
    "actions": [
        {
            "add": {
                "index": "koten",
                "alias": "Linux容器运维工程师"
            }
        }
    ]
}

 

3、给索引删除别名

POST http://10.0.0.101:19200/_aliases

{
    "actions": [
        {
            "remove": {
                "index": "koten",
                "alias": "Linux容器运维工程师"
            }
        }
    ]
}

也可以在界面删除 

4、给索引修改别名

修改别名的原理就是先删除再添加

POST http://10.0.0.101:19200/_aliases

{
    "actions": [
        {
            "remove": {
                "index": "koten",
                "alias": "Linux容器运维工程师"
            }
        },
        {
            "add": {
                "index": "koten",
                "alias": "DBA运维工程师"
            }
        }
    ]
}

当然除了这些索引还有其他操作,有需要可以看官方文档

https://www.elastic.co/guide/en/elasticsearch/reference/current/indices.html

二、文档操作

1、创建

1、不指定文档ID

POST http://10.0.0.101:19200/koten/_doc

{"name":"koten","hobby":["Linux","K8s"]}



2、指定文档ID

如果已有的文档id再次创建文档内容会被覆盖

POST http://10.0.0.101:19200/koten/_doc/1001

{"name":"koten","hobby":["Linux","K8s"]}

或者
POST http://10.0.0.101:19200/koten/_doc

{"name":"koten","hobby":["Linux","K8s"],"_id":"1001"}

两个方法都可以,各有利弊,前者提交信息没有体现id,但是写在url可以快速检索,无需遍历整个索引,后者会增大带宽资源,但是看着更加明了,容易记忆

再次点击,提交的文档内容会被覆盖,且_version显示2

2、查看

1、全量查询

GET http://10.0.0.101:19200/koten/_search

2、查询指定的文档

GET http://10.0.0.101:19200/koten/_doc/1001

3、修改

1、全量更新

POST http://10.0.0.101:19200/koten/_doc/1001

{
    "name": "koten",
    "hobby": [
        "mysql",
        "windows",
        "nginx"
    ]
}

2、局部更新

POST http://10.0.0.101:19200/koten/_doc/1001/_update

{
    "doc": {
        "hobby": [
            "PHP",
            "zabbix"
        ],
        "address": "101"
    }
}

4、删除

DELETE http://10.0.0.101:19200/koten/_doc/1001

5、批量增加

批量处理用到_bulk的api,写的提交内容不再是json格式,而是一种固定的格式

POST http://10.0.0.101:19200/_bulk

{ "create":{"_index":"koten01","_id":1001}}
{"name":"koten01","hobby":["nginx","tomcat","php"]}
{ "create":{"_index":"koten02","_id":1002}}
{"name":"koten02","hobby":["gitlab","Jenkins","sonarqube","maven"]}

6、批量查询

GET http://10.0.0.101:19200/_mget

{
  "docs": [
    {
      "_index": "koten01",
      "_id": "1001"
    },
    {
      "_index": "koten02",
      "_id": "1002"
    }
  ]
} 

7、批量更改

POST http://10.0.0.101:19200/_bulk

{ "update":{"_index":"koten01","_id":1001}}
{"doc":{"name":"koten01","hobby":["1","2","3"]}}
{ "update":{"_index":"koten02","_id":1002}}
{"doc":{"name":"koten02","hobby":["4","5","6","7"]}}

8、批量删除

POST http://10.0.0.101:19200/_bulk

{ "delete" : { "_index" : "koten01", "_id" : "1001" } }
{ "delete" : { "_index" : "koten02", "_id" : "1002" } }

三、数据类型  

创建数据类型的意义在于取数据的时候可以通过数据类型去取,我们以存储查看IP网段为案例,简单介绍下。

1、创建索引时指定映射关系 

PUT http://10.0.0.101:19200/koten-ip

{
    "mappings" :{
        "properties": {
            "ip_addr" : {
                "type": "ip"
            }
        }
    },
	"settings": {
		"number_of_shards":3,
		"number_of_replicas":0
	}
}

2、查看索引的映射关系

GET http://10.0.0.101:19200/koten-ip

3、创建测试数据

POST http://10.0.0.101:19200/_bulk

{ "create": { "_index": "koten-ip"} }
{ "ip_addr": "192.168.10.101" }
{ "create": { "_index": "koten-ip"} }
{ "ip_addr": "192.168.10.201" }
{ "create": { "_index": "koten-ip"} }
{ "ip_addr": "172.31.10.100" }
{ "create": { "_index": "koten-ip"} }
{ "ip_addr": "10.0.0.222" }

4、查看IP的网段

查看所有IP

GET http://10.0.0.101:19200/koten-ip/_search

查看指定的IP网段

POST http://10.0.0.101:19200/koten-ip/_search

{
    "query": {
        "match" : {
            "ip_addr": "192.168.0.0/24"
        }
    }
}

练习(批量存储+批量定义数据类型)

批量存储10条宝马汽车的信息(数据来自采集当日的官网),字段包含标题、价格、品牌、商品链接地址、商品链接对应的IP地址、采集该信息的作者、作者所在组。

一、创建指定字段格式的索引

PUT http://10.0.0.101:19200/koten-shopping

{
    "mappings" :{
        "properties": {
			"title": {
			   "type": "text"
			},
			"price": {
				"type": "float"
			},
			"brand": {
				"type": "keyword"
			},
			"item": {
				"type": "text"
			},
			"group": {
				"type": "byte"
			},
            "ip_addr" : {
                "type": "ip"
            },
			"author": {
				"type": "text"
			}
        }
    },
	"settings": {
		"number_of_shards":3,
		"number_of_replicas":0
	}
}

二、采集并写入宝马商品信息数据

POST http://10.0.0.101:19200/_bulk

{ "create": { "_index": "koten-shopping"} }
{ "ip_addr": "221.194.154.181" ,"title":"BMW1系运动轿车 125i M运动曜夜版","price":249900,"brand":"宝马","item":"https://www.bmw-emall.cn/newcar/design?series=1&rangeCode=F52&packageCode=2W71_0ZMB&sop=1672502400000","group":3,"author":"koten"}
{ "create": { "_index": "koten-shopping"} }
{ "ip_addr": "221.194.154.181" ,"title":"BMW2系四门轿跑车 225i M运动曜夜套装","price":298900,"brand":"宝马","item":"https://www.bmw-emall.cn/newcar/design?series=2&rangeCode=F44&packageCode=31AK_0ZSM&sop=1667232000000","group":3,"author":"koten"}
{ "create": { "_index": "koten-shopping"} }
{ "ip_addr": "221.194.154.181" ,"title":"新BMW3系 330i M运动曜夜套装","price":381900,"brand":"宝马","item":"https://www.bmw-emall.cn/newcar/design?series=3&rangeCode=G20&packageCode=24FF_0ZMC&sop=1672502400000","group":3,"author":"koten"}
{ "create": { "_index": "koten-shopping"} }
{ "ip_addr": "221.194.154.181" ,"title":"THE i3 eDrive40L曜夜运动套装","price":413900,"brand":"宝马","item":"https://www.bmw-emall.cn/newcar/design?series=3&rangeCode=G28BEV&packageCode=81BE_0ZCP&sop=1672502400000","group":3,"author":"koten"}
{ "create": { "_index": "koten-shopping"} }
{ "ip_addr": "221.194.154.181" ,"title":"BMW4系双门轿跑车 430i M运动曜夜套装","price":479900,"brand":"宝马","item":"https://www.bmw-emall.cn/newcar/design?series=4&rangeCode=G22&packageCode=51AP_0ZSM&sop=1677600000000","group":3,"author":"koten"}
{ "create": { "_index": "koten-shopping"} }
{ "ip_addr": "221.194.154.181" ,"title":"BMW4系敞篷轿跑车 430i M运动曜夜套装","price":576900,"brand":"宝马","item":"https://www.bmw-emall.cn/newcar/design?series=4&rangeCode=G23&packageCode=11AT_0ZSM","group":3,"author":"koten"}
{ "create": { "_index": "koten-shopping"} }
{ "ip_addr": "221.194.154.181" ,"title":"纯电动BMW i4 eDrive40","price":469900,"brand":"宝马","item":"https://www.bmw-emall.cn/newcar/design?series=4&rangeCode=G26BEV&packageCode=71AW_0ZOM&sop=1677600000000","group":3,"author":"koten"}
{ "create": { "_index": "koten-shopping"} }
{ "ip_addr": "221.194.154.181" ,"title":"BMW5系Li 530Li xDrive M运动套装","price":495500,"brand":"宝马","item":"https://www.bmw-emall.cn/newcar/design?series=5&rangeCode=G38&packageCode=21AF_0ZLU","group":3,"author":"koten"}
{ "create": { "_index": "koten-shopping"} }
{ "ip_addr": "221.194.154.181" ,"title":"BMW6系GT 630i M运动大旅行家版","price":699900,"brand":"宝马","item":"https://www.bmw-emall.cn/newcar/design?series=6&rangeCode=G32&packageCode=21BP_0ZLU","group":3,"author":"koten"}
{ "create": { "_index": "koten-shopping"} }
{ "ip_addr": "221.194.154.181" ,"title":"新BMW7系 740Li 尊享型 豪华套装","price":1269000,"brand":"宝马","item":"https://www.bmw-emall.cn/newcar/design?series=7&rangeCode=G70&packageCode=11EH_0ZOM&sop=1677600000000","group":3,"author":"koten"}

ES-head中打开,点击链接可以直接跳转,类似于搜索引擎的跳转 

三、读取宝马商品信息数据

读取全部信息数据

GET http://10.0.0.101:19200/koten-shopping/_search


ES安装包下载链接:https://pan.baidu.com/s/1UTXI6U4LvSdGnEflXkR29g?pwd=z04q 
Postman安装包下载链接:https://pan.baidu.com/s/1-L2Odn1q9dP2VZnh0ghxJg?pwd=09c0 

我是koten,10年运维经验,持续分享运维干货,感谢大家的阅读和关注!

猜你喜欢

转载自blog.csdn.net/qq_37510195/article/details/130859412