zoukankan      html  css  js  c++  java
  • Elasticsearch(5) --- 基本命令(集群相关命令、索引CRUD命令、文档CRUD命令)

    Elasticsearch(5)--- 基本命令

    说明:该博客对于的Elasticsearch 的版本为7.3。

    这篇博客的命令分为ES集群相关命令索引CRUD命令文档CRUD命令。这里不包括Query查询命令,它单独写一篇博客。

    一、ES集群相关命令

    ES集群相关命令主要是_cat命令,所以这里详细讲解下该命令。

    1、_cat命令

    _cat系列提供了一系列查询Elasticsearch集群状态的接口。

    /_cat/allocation      #查看单节点的shard分配整体情况
    /_cat/shards          #查看各shard的详细情况
    /_cat/shards/{index}  #查看指定分片的详细情况
    /_cat/master          #查看master节点信息
    /_cat/nodes           #查看所有节点信息
    /_cat/indices         #查看集群中所有index的详细信息
    /_cat/indices/{index} #查看集群中指定index的详细信息
    /_cat/segments        #查看各index的segment详细信息,包括segment名, 所属shard, 内存(磁盘)占用大小, 是否刷盘
    /_cat/segments/{index}#查看指定index的segment详细信息
    /_cat/count           #查看当前集群的doc数量
    /_cat/count/{index}   #查看指定索引的doc数量
    /_cat/recovery        #查看集群内每个shard的recovery过程.调整replica。
    /_cat/recovery/{index}#查看指定索引shard的recovery过程
    /_cat/health          #查看集群当前状态:红、黄、绿
    /_cat/pending_tasks   #查看当前集群的pending task
    /_cat/aliases         #查看集群中所有alias信息,路由配置等
    /_cat/aliases/{alias} #查看指定索引的alias信息
    /_cat/thread_pool     #查看集群各节点内部不同类型的threadpool的统计信息,
    /_cat/plugins         #查看集群各个节点上的plugin信息
    /_cat/fielddata       #查看当前集群各个节点的fielddata内存使用情况
    /_cat/fielddata/{fields}     #查看指定field的内存使用情况,里面传field属性对应的值
    /_cat/nodeattrs              #查看单节点的自定义属性
    /_cat/repositories           #输出集群中注册快照存储库
    /_cat/templates              #输出当前正在存在的模板信息
    

    每个命令都支持使用?v参数,让输出内容表格显示表头; pretty则让输出缩进更规范

    2、示例

    1) 节点信息

    curl -X GET "localhost:9200/_cat/nodes?v&pretty"
    ip         heap.percent ram.percent cpu load_1m load_5m load_15m node.role master name
    172.18.0.4           52          97   6    0.02    0.11     0.28 mdi       -      es7_02
    172.18.0.5           57          97   6    0.02    0.11     0.28 mdi       *      es7_01
    
    1. heap.percent 堆内存占用百分比
    2. ram.percent 内存占用百分比
    3. cpu CPU占用百分比
    4. master *表示节点是集群中的主节点
    5. name 节点名

    2) 分片信息

    curl -X GET "localhost:9200/_cat/shards?v&pretty"
    index                           shard prirep state    docs   store ip         node
    .monitoring-es-7-2019.08.30     0     p      STARTED 21333  11.8mb 172.18.0.5 es7_01
    .monitoring-es-7-2019.08.30     0     r      STARTED 21333  11.8mb 172.18.0.4 es7_02
    goods-index                     0     p      STARTED     1   2.5mb 172.18.0.5 es7_01
    goods-index                     0     r      STARTED     1   2.5mb 172.18.0.4 es7_02
    .kibana_1                       0     p      STARTED     4  22.4kb 172.18.0.5 es7_01
    .kibana_1                       0     r      STARTED     4  22.4kb 172.18.0.4 es7_02
    
    1. index 索引名称
    2. shard 分片序号
    3. prirep p表示该分片是主分片, r 表示该分片是复制分片
    4. store 该分片占用存储空间
    5. node 所属节点节点名
    6. docs 分片存放的文档

    3) 索引信息

    curl -X GET "localhost:9200/_cat/indices?v"
    health status index                           uuid                   pri rep docs.count docs.deleted store.size pri.store.size
    green  open   goods-index                     NhqSRJWUQiu46tdOKol4wA   1   1          1         7018        5mb          2.5mb
    green  open   .monitoring-es-7-2019.08.30     lVDNFDVdSXqqrn8CdI_XGg   1   1      21333        18920     23.6mb         11.8mb
    green  open   .kibana_1                       rvSlNVjJTsus80klzU19jQ   1   1          4            1     44.9kb         22.4kb
    
    1. health 索引的健康状态
    2. index 索引名
    3. pri 索引主分片数量
    4. rep 索引复制分片
    5. store.size 索引主分片 复制分片 总占用存储空间
    6. pri.store.size 索引总占用空间, 不计算复制分片 占用空间

    二、索引CRUD命令

    1、查询索引

    查询索引命令上面已经展示过了,这里再补充一些

    条件过滤

    _cat/indices?v&health=yellow   #查询健康状态为yellow的索引
    

    排序

    _cat/indices?v&health=yellow&s=docs.count:desc #根据文档数量进行索引排序
    

    索引详细信息

    curl -X GET "localhost:9200/my_index/_stats?pretty" #索引详细信息
    

    2、创建索引

    PUT /student
    {
        "settings": {
            "number_of_shards": 3,
            "number_of_replicas": 1
        },
        "mappings": {
                "properties": {
                    "name": {
                        "type":"text"
                    },
                    "country": {
                        "type":"keyword"
                    },
                    "age": {
                        "type":"integer"
                    },
                    "date": {
                        "type": "date",
                        "format": "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis"
                }
            }
        }
    }
    

    创建成功

    3、删除索引

    curl -X DELETE "localhost:9200/index-name"
    

    三、文档CRUD命令

    在讲文档的CRUD之前我们要先理解 GET/PUT/POST/DELETE

    POST /uri        #创建
    DELETE /uri/xxx  #删除
    PUT /uri/xxx     #更新或创建
    GET /uri/xxx     #查看
    

    思考POST和PUT的区别

    1)在ES中,如果不确定文档的ID,那么就需要用POST,它可以自己生成唯一的文档ID。如果确定文档的ID,那么就可以用PUT,当然也可以用POST,它们都可以创建或修改文档(如果是修改,那么_version版本号提高1)

    2)PUT、GET、DELETE是幂等的,而POST并不一定是幂等。如果你对POST也指定了文档ID,那它其实和PUT没啥区别,那它就是幂等。如果你没有指定文档ID那么就不是幂等操作了,因为同一数据,你执行多次POST,那么生成多个UUID的文档,

    也就是每POST一次都会新增一条数据。

    1、创建文档

    1)PUT方式创建

    PUT  /student/_doc/1 
    {
        "name": "徐小小",
        "country": "杭州",
        "age": "3",
        "date": "2019-09-04"
    }
    

    运行结果

    2)POST方式创建

    POST不指定主键

    POST  /student/_doc
    {
        "name": "徐小小",
        "country": "杭州",
        "age": "3",
        "date": "2019-09-04"
    }
    

    运行结果

    POST指定主键ID

    POST  /student/_doc/88
    {
        "name": "徐小小",
        "country": "杭州",
        "age": "3",
        "date": "2019-09-04"
    }
    

    运行结果

    可以明显看出,POST也可以指定文档ID,如果指定文档ID,那么就和PUT没有区别。ID不存在则创建,存在则更新并且_version版本+1.

    2、文档查看

    GET  /student/_doc/1
    

    如图

    3、文档更新

    商品PUT和POST执行的时候,如果指定的文档ID存在,那么就可以执行更新操作。不过它们执行的是全量更新,如果需要单独对某字段更新我们可以使用关键字_update

    例如

    POST /student/_update/1
    {
       "doc" : {
          "age": 5
       }
    }
    

    如图,发现age已经更新成功

    4、文档删除

    语法

    DELETE /{index}/{type}/{id}
    

    参考

    1、Elasticsearch核心技术与实战---阮一鸣(eBay Pronto平台技术负责人

    2、ElasticSearch常用命令

    3、Elasticsearch 状态查询Cat接口

    4、文档操作基本命令

    5、ElasticSearch批量操作相关命令



     我相信,无论今后的道路多么坎坷,只要抓住今天,迟早会在奋斗中尝到人生的甘甜。抓住人生中的一分一秒,胜过虚度中的一月一年!(9)
    

  • 相关阅读:
    Luckysheet如何初始化含合并单元格的数据
    Luckysheet如何一键导入本地Excel
    又发现一款纯js开源电子表格Luckysheet
    Sublime Text3 注册码(Windows/Build 3176版本)| 开发工具
    Python初学者笔记(4)-简单的通讯录
    Python初学者笔记(3):输出列表中的奇数/奇数项,字符串中的偶数项,字符串大小写转换
    安装wampserver出现“The Program can't start because MSVCR110.dll is missing from your computer. Try reinstalling the program to fix this problem”
    python初学者笔记(2):阿拉伯数字转换成中文大写
    Python初学者笔记:打印出斐波那契数列的前10项
    JavaScript弹出对话框的三种方式
  • 原文地址:https://www.cnblogs.com/qdhxhz/p/11461174.html
Copyright © 2011-2022 走看看