2025年ES集群的索引管理,文档管理

ES集群的索引管理,文档管理ES 集群的常见术语 index 索引 是一个逻辑的存储单元 并不负责实际数据的存储 一个索引可以有一个或多个分片 换句话说 索引是存储一类文档类型的集合 比如说 黑名单日志 鉴权日志 反作弊日志 用户上报日志 shard 分片

大家好,我是讯享网,很高兴认识大家。

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"} }

小讯
上一篇 2025-03-16 12:08
下一篇 2025-02-09 10:48

相关推荐

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