ES集群的常见术语:
index(索引):
是一个逻辑的存储单元,并不负责实际数据的存储。一个索引可以有一个或多个分片。
换句话说,索引是存储一类文档类型的集合。比如说: 黑名单日志,鉴权日志,反作弊日志,用户上报日志,....
shard(分片)
是实际存储数据的地方,底层对应是一个lucene分片。所谓的分片可以理解将一个索引的数据分成多少分存储。
分片分为两种角色:
主分片:(primary shard)
负责数据的读写(rw)。
副本分片:(replica shard)
负责数据的读取(ro)。
温馨提示:
(1)主分片和副本分片不能在同一个节点上,这样可以充分利用副本的特性,在同一个节点的话,当该节点损坏,副本就起不到作用啦。
(2)主分片和副本分片数据是一致的,因为副本分片是从主分片同步数据的;
(3)一个索引最少要有1个分片,但是一个分片可以没有副本;
(4)ES集群有三种颜色:
红色:
代表有部分的主分片无法访问。
当副本数为0时,意味着部分数据无法访问,严重情况下,可能存在数据丢失的风险。
黄色:
代表有部分的副本分片无法访问。
数据都可以正常访问,若在此期间,主分片宕机,有可能存在部分数据无法访问,严重情况下,可能存在数据丢失的风险。
绿色:
代表主分片和副本分片都可以正常访问。通常情况下,集群处于绿色状态。
创建索引
1.不指定分片和副本
PUT http://10.0.0.103:9200/oldboyedu-linux82
2.创建指定的分片和副本
PUT http://10.0.0.103:9200/oldboyedu-elk
{
"settings":{
"number_of_shards": 10,
"number_of_replicas": 0
}
}
查看索引
1.查看所有的索引信息
GET http://10.0.0.103:9200/_cat/indices?v
删除索引:
1.删除单个索引
DELETE http://10.0.0.103:9200/oldboyedu-elk
2.基于通配符删除多个索引
DELETE http://10.0.0.103:9200/oldboyedu-linux*
修改索引:
1.修改副本
PUT http://10.0.0.103:9200/oldboyedu-elk-2022/_settings
{
"number_of_replicas":0
}
2.分片数量不支持修改,此处可以引入文档路由的原理。
文档路由公式 ---> shard_number = hash(文档ID) % primary_shards_numbers
索引的别名:
1.添加别名
POST http://10.0.0.103:9200/_aliases
{
"actions": [
{
"add": {
"index": "oldboyedu-elk-2022",
"alias": "Linux容器运维"
}
},
{
"add": {
"index": "oldboyedu-elk-2022",
"alias": "DBA"
}
}
]
}
2.查看别名
GET http://10.0.0.103:9200/_aliases
3.删除别名
POST http://10.0.0.103:9200/_aliases
{
"actions": [
{
"remove": {
"index": "oldboyedu-elk-2022",
"alias": "Linux容器运维"
}
}
]
}
4.修改别名
POST http://10.0.0.103:9200/_aliases
{
"actions": [
{
"remove": {
"index": "oldboyedu-elk-2022",
"alias": "Linux容器运维"
}
},
{
"add": {
"index": "oldboyedu-elk-2022",
"alias": "Linux容器运维-2022"
}
}
]
}
索引的关闭和打开:
1.打开索引(索引创建时默认就处于打开状态哟)
POST http://10.0.0.103:9200/oldboyedu-elk-2022/_open
2.关闭索引(当索引处于关闭状态,则集群无法进行读写。但数据并不会被删除。)
POST http://10.0.0.103:9200/oldboyedu-elk-2022/_close
JSON文本格式:
基础数据类型:
字符串:
定义: 使用双引号引起来的所有字符,均为字符串。
举例: "oldboyedu" "2022"
数字:
定义: 整形和浮点型。
举例: 200 3.
空值:
定义: 没有给定值,即为空。
举例: null
布尔值:
定义: 只有两个值,表示真或假。
举例: true false
高级数据类型:
数组:
定义: 可以存储多个基础数据类型,各元素使用逗号分割,两边有一个中括号。
举例: ["oldboyedu","linux82",2022,true,false]
格式化版本:
[
"oldboyedu",
"linux82",
2022,
true,
false
]
对象:
定义: 基于KEY-VALUE的形式存储数据,用KEY来描述数据,各元素使用逗号分割,两边有一个大括号。
举例: {"school":"oldboyedu","class":"linux82","year":2022,"gender":true, "biye":false}
格式化版本:
{
"school":"oldboyedu",
"class":"linux82",
"year":2022,
"gender":true,
"biye":false
}
课堂练习:
(1)使用json格式记录同学的前3排人员名单,要求如下:
name:
address:
hobby:
gender:
文档的基础管理
创建文档:
1)不指定文档的ID
POST http://10.0.0.103:9200/teacher/_doc
{
"name": "oldboy",
"gender": "man",
"hobby": ["Linux运维","思想课","写书"],
"address": "东北"
}
2)指定文档的ID(不推荐,因为可能会导致文档的ID冲突,除非你明确知道要这样用)
POST http://10.0.0.103:9200/teacher/_doc/1001
{
"name": "苍老师",
"gender": "women",
"address": "东京",
"hobby": [
"家庭主妇",
"拍电影"
]
}
查看文档:
1)全量查询
GET http://10.0.0.103:9200/teacher/_search
2)查询指定的文档ID
GET http://10.0.0.103:9200/teacher/_doc/1002
修改文档:
1)全量修改
POST http://10.0.0.103:9200/teacher/_doc/1002
{
"name": "苍老师",
"gender": "women",
"address": "东京",
"hobby": [
"家庭主妇",
"和王建平一起看电影"
]
}
2)局部修改
POST http://10.0.0.103:9200/teacher/_doc/1002/_update
{
"doc": {
"hobby": [
"和高云飞一起看电影"
]
}
}
删除文档:
DELETE http://10.0.0.103:9200/teacher/_doc/1002
彩蛋:元数据和源数据的区别吗?
元数据:
用于描述数据的数据。
源数据:
数据本身,文档本身。
批量操作文档:
批量创建文档:
1)不指定文档的Id
POST http://10.0.0.101:9200/_bulk
{ "create" : { "_index" : "student" } }
{"name":"王建平","gender":"男","hobby":["苍老师","欧美","日韩"]}
{ "create" : { "_index" : "student" } }
{"name":"高云飞","gender":"男","hobby":["起马","Linux","刘青凯"]}
{ "create" : { "_index" : "student" } }
{"name":"李明凯","gender":"女","hobby":["化妆"]}
2)指定文档的Id
POST http://10.0.0.101:9200/_bulk
{ "create" : { "_index" : "student","_id": 1001 } }
{"name":"宋少华","gender":"男","hobby":["苍老师","张龙"]}
{ "create" : { "_index" : "student","_id": 1002 } }
{"name":"赵佳佳","gender":"男","hobby":["黑丝"]}
{ "create" : { "_index" : "student","_id": 1003 } }
{"name":"陈禹同","gender":"女","hobby":["采花"]}
批量查看文档:
1)基于文档的Id查看多个文档案例1
GET/POST http://10.0.0.103:9200/_mget
{
"docs": [
{
"_index": "student",
"_id": "1001"
},
{
"_index": "student",
"_id": "1003"
}
]
}
2)基于文档的Id查看多个文档案例2
POST http://10.0.0.103:9200/student/_mget
{
"ids": [1001,1003]
}
批量修改文档:
POST http://10.0.0.103:9200/_bulk
{ "update" : { "_index" : "student" ,"_id": "FWj2pYIBwD5sIWPHx-Na"} }
{"doc":{"gender":"男","hobby":["化妆","Linux"]}}
{ "update" : { "_index" : "student" ,"_id": "1003"} }
{"doc":{"gender":"男"}}
批量删除文档:
POST http://10.0.0.103:9200/_bulk
{ "delete" : { "_index" : "student" ,"_id": "1003"} }
{ "delete" : { "_index" : "student" ,"_id": "1001"} }

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/39237.html