开发者

ElasticSearch学习之Es集群Api操作示例

目录
  • 前言
  • Es集群Api操作
    • _cat
      • 获取当前集开发者_C培训群主节点信息
      • 获取集群当中节点信息
      • 获取集群健康信息
      • 获取集群索引信息
      • 获取集群别名信息
    • _cluster
      • 查询集群健康状态
      • 查询集群统计信息
      • 查询集群状态
  • 结束语

    前言

    该系列默认开启Nacos 服务,还不会搭建的小伙伴可以参考往期文章~

    上文,我们带大家利用docker来快速搭建Es集群,如果还不会搭建的小伙伴,可以阅读上文,参考我的部署方式。

    本期我们重点围绕es本身来给大家作一些讲解以及实战。虽然市面上已经有一些成熟的ORM框架可以很好的根springboot整合,我们只要调调方法就好了,但是对于我们初学来讲,不是很友好,首先我们得弄清楚它到底是怎么进行操作的。

    举个例子,哪天领导跟你讲,现在帮我拉一批数据,半小时之后给我,你难不成回复等我开发完,上完线才能查到?而且这种可能只是一次性的需求,显然是不大行的。这时,如果你可以脱离框架,知道它的一些查询语法,问题不就很快就解决了,也不用你开发再调试。

    这里主要想告诉大家,学习新知识的时候,首先要弄清楚知识的本身,学习需要循序渐进,本节主要带大家学习Es集群Api操作,好了, 废话不多说直接开整吧~

    Es集群Api操作

    在这之前,我们需要做一些准备工作,就是上一节最后的部分,我们运行好es集群服务后,打开kibana的控制台,打开之后,我会带着大家一一操作。

    _cat

    它的作用是帮助开发者快速查询Elasticsearch的相关信息,比如我现在想要直挂的了解es集群的状态。

    我们在控制台输入GET _cat,点击运行按钮,它会输出它的全部路由,可以简单的理解为http://www.devze.com它的所有调用方式

    =^.^=
    /_cat/allocation
    /_cat/shards
    /_cat/shards/{index}
    /_cat/master
    /_cat/nodes
    /_cat/tasks
    /_cat/indices
    /_cat/indices/{index}
    /_cat/segments
    /_cat/segments/{index}
    /_cat/count
    /_cat/count/{index}
    /_cat/recovery
    /_cat/recovery/{index}
    /_cat/health
    /_cat/pending_tasks
    /_cat/aliases
    /_cat/aliases/{alias}
    /_cat/thread_pool
    /_cat/thread_pool/{thread_pools}
    /_cat/plugins
    /_cat/fielddata
    /_cat/fielddata/{fields}
    /_cat/nodeattrs
    /_cat/repositories
    /_cat/snapshots/{repository}
    /_cat/templates
    

    获取当前集群主节点信息

    语法:

    GET /_cat/master
    

    输出:

    _1g6ImOFQNqC1OBObqqnvw 172.19.0.3 172.19.0.3 es02
    

    我们可以看到当前的一个主节点是es02,虽然信息是输出了,但是看的好像不大清楚,因为没有标题。下面给大家介绍一个标题小技巧,后边加上?v就可以看到标题了

    GET /_cat/master?v
    

    输出:

    id                     host       ip         node
    _1g6ImOFQNqC1OBObqqnvw 172.19.0.3 172.19.0.3 es02
    

    但是有的情况下,会有大量的标题,而我们只想看到部分信息,怎么办?比如我指向看到ip,这么做就可以了

    GET /_cat/master?h=ip
    

    输出:

    172.19.0.3
    

    当然,我们也可以连带标题

    GET /_cat/master?h=ip&v
    

    输出:

    ip
    172.19.0.3
    

    当然,我们在不清楚字段意思的时候,也可以寻求帮助

    GET /_cat/master?help
    
    id   |   | node id    
    host | h | host name  
    ip   |   | ip address 
    node | n | node name  
    

    这种方法也适用其它的_cat查询语句

    获取集群当中节点信息

    语法:

    GET /_cat/nodes?v
    

    输出:

    ip         heap.percent ram.percent cpu load_1m load_5m load_15m node.role master name
    172.19.0.3           20          73   0    0.02    0.05     0.15 dilm      *      es02
    172.19.0.4           30          73   0    0.02    0.05     0.15 dilm      -      es03
    172.19.0.2           27          73   0    0.02    0.05     0.15 dilm      -      es01
    

    获取集群健康信息

    语法:

    GET /_cat/health?v
    

    输出:

    epoch      timestamp cluster    status node.total node.data shards pri relo init unassign pending_tasks max_task_wait_time active_shards_percent
    1669950213 03:03:33  es-cluster green           3         3      6   3    0    0        0             0                  -                100.0%
    

    重点看一下status,输出了一个green,说明它是健康状态

    获取集群索引信息

    GET _cat/indices?v
    
    health status index                    uuid                   pri rep docs.count docs.deleted store.size pri.store.size
    green  open   .kibana_task_manager_1   Kgl57A8fSDygmcJrnFm1pA   1   1          2            0     61.4kb         41.4kb
    green  open   .apm-agent-configuration ozJ-wxmtSaSXhRjBkpYbrQ   1   1          0            0       566b           283b
    green  open   .kibana_1                1CywDD-zSxGotJuIfPc_4w   1   1         15            6    146.1kb         66.8kb
    

    可以看到一些默认的索引,以及它们的健康状态,占用的磁盘大小等信息

    获取集群别名信息

    GET _cat/aliases?v
    
    alias                index                  filter routing.index routing.search is_write_index
    .kibana              .kibana_1              -      -             -              -
    .kibana_task_manager .kibana_task_manager_1 -      -             -              -
    

    _cluster

    用于通过restful的api形式进行集群信息的获取和操作,与_cat类似,但是_cluster是基于json形式进行数据返回

    查询集群健康状态

    GET /_cluster/health
    
    {
      "cluster_name" : "es-cluster",
      "status" : "green",
      "timed_out" : false,
      "number_of_nodes" : 3,
      "number_of_data_nodes" : 3,
      "active_primary_shards" : 3,
      "active_shards" : 6,
      "relocating_shards" : 0,
      "initializing_shards" : 0,
      "unassigned_shards" : 0,
      "delayed_unassigned_shards" : 0,
      "number_of_pending_tasks" : 0,
      "number_of_in_flight_fetch" : 0,
      "task_max_waiting_in_queue_millis" : 0,
      "active_shards_percent_as_number" : 100.0
    }
    

    查询集群统计信息

    GET /_cluster/stats
    

    会详细列出当前集群总分片树,总主分片数,副分片编程数,安装的插件等集群所有统计信息,如果不明白分片是啥也没关系,先学会使用,后边会给大家总结它的原理,因为这部分需要一些前置知识,我们先上手操作。

    {
      "_nodes" : {
        "total" : 3,
        "successful" : 3,
        "failed" : 0
      },
      "cluster_name" : "es-cluster",
      "cluster_uuid" : "ardUAhdGQvKKJJxei8Hs8A",
      "timestamp" : 1669951414177,
      "status" : "green",
      "indices" : {
        "count" : 3,
        "shards" : {
          "total" : 6,
          "primaries" : 3,
          "replication" : 1.0,
          "index" : {
            "shards" : {
              "min" : 2,
              "max" : 2,
              "avg" : 2.0
            },python
            "primaries" : {
              "min" : 1,
              "max" : 1,
              "avg" : 1.0
            },
            "replication" : {
              "min" : 1.0,
              "max" : 1.0,
              "avg" : 1.0
            }
          }
        },
        "docs" : {
          "count" : 22,
          "deleted" : 6
        },
        "store" : {
          "size_in_bytes" : 118135
        },
        "fielddata" : {
          "memory_size_in_bytes" : 1216,
          "evictions" : 0
        },
        "query_cache" : {
          "memory_size_in_bytes" : 0,
          "total_count" : 0,
          "hit_count" : 0,
          "miss_count" : 0,
          "cache_size" : 0,
          "cache_count" : 0,
          "evictions" : 0
        },
        "completion" : {
          "size_in_bytes" : 0
        },
        "segments" : {
          "count" : 11,
          "memory_in_bytes" : 23623,编程客栈
          "terms_memory_in_bytes" : 16467,
          "stored_fields_memory_in_bytes" : 3432,
          "term_vectors_memory_in_bytes" : 0,
          "norms_memory_in_bytes" : 1152,
          "points_memory_in_bytes" : 0,
          "doc_values_memory_in_bytes" : 2572,
          "index_writer_memory_in_bytes" : 0,
          "version_map_memory_in_bytes" : 0,
          "fixed_bit_set_memory_in_bytes" : 528,
          "max_unsafe_auto_id_timestamp" : -1,
          "file_sizes" : { }
        }
      },
      "nodes" : {
        "count" : {
          "total" : 3,
          "coordinating_only" : 0,
          "data" : 3,
          "ingest" : 3,
          "master" : 3,
          "ml" : 3,
          "voting_only" : 0
        },
        "versions" : [
          "7.6.2"
        ],
        "os" : {
          "available_processors" : 48,
          "allocated_processors" : 48,
          "names" : [
            {
              "name" : "linux",
              "count" : 3
            }
          ],
          "pretty_names" : [
            {
              "pretty_name" : "Centos Linux 7 (Core)",
              "count" : 3
            }
          ],
          "mem" : {
            "total_in_bytes" : 24514228224,
            "free_in_bytes" : 6337855488,
            "used_in_bytes" : 18176372736,
            "free_percent" : 26,
            "used_percent" : 74
          }
        },
        "process" : {
          "cpu" : {
            "percent" : 0
          },
          "open_file_descriptors" : {
            "min" : 444,
            "max" : 458,
            "avg" : 449
          }
        },
        "jvm" : {
          "max_uptime_in_millis" : 2533693,
          "versions" : [
            {
              "version" : "13.0.2",
              "vm_name" : "OpenJDK 64-Bit Server VM",
              "vm_version" : "13.0.2+8",
              "vm_vendor" : "AdoptOpenJDK",
              "bundled_jdk" : true,
              "using_bundled_jdk" : true,
              "count" : 3
            }
          ],
          "mem" : {
            "heap_used_in_bytes" : 470693600,
            "heap_max_in_bytes" : 1556938752
          },
          "threads" : 396
        },
        "fs" : {
          "total_in_bytes" : 723860312064,
          "free_in_bytes" : 50www.devze.com8481421312,
          "available_in_bytes" : 508481421312
        },
        "plugins" : [ ],
        "network_types" : {
          "transport_types" : {
            "security4" : 3
          },
          "http_types" : {
            "security4" : 3
          }
        },
        "discovery_types" : {
          "zen" : 3
        },
        "packaging_types" : [
          {
            "flavor" : "default",
            "type" : "docker",
            "count" : 3
          }
        ],
        "ingest" : {
          "number_of_pipelines" : 2,
          "processor_stats" : {
            "gsub" : {
              "count" : 0,
              "failed" : 0,
              "current" : 0,
              "time_in_millis" : 0
            },
            "script" : {
              "count" : 0,
              "failed" : 0,
              "current" : 0,
              "time_in_millis" : 0
            }
          }
        }
      }
    }
    

    查询集群状态

    GET /_cluster/state
    

    会列出当前集群所有节点信息,以及所有索引的setting和mapping。同样的,json很大,数据也都很详细

    结束语

    本节主要带大家体验了一下它的api操作,重点带大家学习了集群相关的api,下一节带大家学习索引相关的api,这个部分大家要仔细阅读,因为都是重点,更多关于ElasticSearch Es集群Api操作的资料请关注我们其它相关文章!

    0

    上一篇:

    下一篇:

    精彩评论

    暂无评论...
    验证码 换一张
    取 消

    最新开发

    开发排行榜