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

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

前言

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

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

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

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

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

Es集群Api操作

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

_cat

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

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

=^.^=
/_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
        },
        "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" : 508481421312,
      "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)

相关推荐

  • ElasticSearch不停机重建索引延伸思考及优化详解

    目录 前言 需求 查询本体 查询限制 聚合查询优化 遇到问题 不停机重建索引 新建索引 切换别名指向新索引 迁移数据 查询异步迁移任务详情 调整正常索引配置 MySQL扩容 停机扩容 不停机扩容 随便聊聊 最后 前言 距离我第一次上手ES过去了一年半多了吧,当时我是从零开始花了大半年时间搭建了一整套Filebeat+Kafka+数据处理服务+Elasticsearch+Kibana+Skywalking日志收集系统.感觉还是很刺激的,毕竟同时去深度学习和运用多个刚上手的中间件对我来说是个极大的磨

  • 与近日火爆的ChatGPT聊Elasticsearch源码

    目录 正文 ChatGpt对话内容 ChatGpt对话截图 正文 最近在研读Elasticsearch最新的源代码,今天突发奇想能不能和ChatGPT聊聊Elasticsearch,看看他对Elasticsearch源码有多少了解,试了后发现这货还不赖. 参考下面的对话内容和最后的对话截图. 不过美中不足的是,ChatGPT的知识截止2021年,所以当我问他一些最新源码时,他的分析还停留在以前的版本上,希望ChatGPT能紧跟时事潮流,早日实现实时迭代更新知识库. ChatGpt对话内容 我:聊

  • 详解Elasticsearch如何把一个索引变为只读

    目录 正文 设置为只读 正文 将索引设置为只读可能听起来很奇怪,但在 Elasticsearch 中执行此类操作是可能的.想象一下这样一种情况,你特别需要限制对索引的写入操作,无论是维护.业务规则还是任何其他原因.让我们学习如何将索引配置为已读以及如何撤消操作. 我们先使用如下的命令来创建一个叫做 test 的索引: PUT test/_doc/1 { "content": "I am xiaoguo from Elastic" } 设置为只读 要进行此更改,我们需

  • ElasticSearch学习之多条件组合查询验证及示例分析

    目录 多条件组合查询 bool constant_score 查询验证 & 分析 验证 分析 排序 默认排序 自定义排序 tips 单字段排序 多字段 scroll分页 初始化快照 & 快照保存10分钟 根据快照ID滚动查询 多条件组合查询 bool es中使用bool来控制多条件查询,bool查询支持以下参数: must:被查询的数据必须满足当前条件 mush_not:被查询的数据必须不满足当前条件 should:被查询的数据应该满足当前条件.should查询被用于修正查询结果的评分.需

  • ElasticSearch学习之Es索引Api操作

    目录 Es索引Api操作 创建索引 索引别名 添加索引别名 查询索引别名 删除索引别名 mapping settings 查询索引 查询当前集群全部索引 查询单个索引 修改索引 删除索引 结束语 Es索引Api操作 在操作之前,先给大家简单的说下索引,在es中,默认所有数据都会建立索引,我们可以类比它是数据库中的库,这里需要提示的是所有的索引index都必须要小写. 创建索引 语法: PUT /${idnexName} 运行: PUT /test 输出: { "acknowledged"

  • docker安装ElasticSearch:7.8.0集群的详细教程

    ElasticSearch集群支持动态请求的方式搭建集群和静态配置文件搭建集群 关于集群的动态连接方式官方的文档:https://www.elastic.co/guide/en/elasticsearch/reference/current/cluster-update-settings.html 前置准备工作 关于参数的官网说明: https://www.elastic.co/guide/en/elasticsearch/reference/current/modules-discovery-

  • Elasticsearch之基本查询及组合查询操作示例

    目录 Elasticsearch查询 一 基本查询 1.1 match查询 1.2 term查询 1.3 terms查询 1.4 控制查询的返回数量(分页) 1.5 match_all 查询 1.6 match_phrase查询 1.7 multi_match 1.8 指定返回的字段 1.9 sort 结果排序 1.10 range范围查询 1.11 wildcard查询 1.12 exists存在 二 组合查询 2.1 bool查询 2.2 简单过滤查询 2.3 查询多个值 2.4 bool过

  • Docker快速搭建Redis集群的方法示例

    什么是Redis集群 Redis集群是Redis提供的分布式数据库方案,集群通过分片(sharding)来进行数据共享,并提供复制和故障转移功能. 节点 一个Redis集群通常由多个节点(node)组成,在刚开始的时候,每个节点都是相互独立的,它们都处于一个只包含自己的集群当中,要组建一个真正可工作的集群,我们必须将各个独立的节点连接起来,构成一个包含多个节点的集群. 集群配置 配置文件 下载配置文件:https://raw.githubusercontent.com/antirez/redis

  • Nginx+Tomcat负载均衡集群的实现示例

    目录 引言 一.案例概述 二.环境部署 三.Nginx 主机安装 四.Tomcat 安装及配置 1. 安装 Tomcat 2. Tomcat 服务器1配置 3. Tomcat 服务器2配置 五.Nginx server 配置 六.验证结果 总结 引言 通常情况下,一个 Tomcat 站点由于可能出现单点故障以及无法应付过多客户复杂多样的请求等问题,不能单独应用于生产环境中,所以需要一套更可靠的解决方案来完善 Web 站点架构. 一.案例概述 Nginx 是一款非常优秀的 http 服务器软件,它

  • docker 搭建Mysql集群的方法示例

    docker基本指令: 更新软件包 yum -y update 安装Docker虚拟机(centos 7) yum install -y docker 运行.重启.关闭Docker虚拟机 service docker start service docker stop 搜索镜像 docker search 镜像名称 下载镜像 docker pull 镜像名称 查看镜像 docker images 删除镜像 docker rmi 镜像名称 运行容器 docker run 启动参数 镜像名称 查看容

  • 使用Docker Swarm搭建分布式爬虫集群的方法示例

    在爬虫开发过程中,你肯定遇到过需要把爬虫部署在多个服务器上面的情况.此时你是怎么操作的呢?逐一SSH登录每个服务器,使用git拉下代码,然后运行?代码修改了,于是又要一个服务器一个服务器登录上去依次更新? 有时候爬虫只需要在一个服务器上面运行,有时候需要在200个服务器上面运行.你是怎么快速切换的呢?一个服务器一个服务器登录上去开关?或者聪明一点,在Redis里面设置一个可以修改的标记,只有标记对应的服务器上面的爬虫运行? A爬虫已经在所有服务器上面部署了,现在又做了一个B爬虫,你是不是又得依次

  • 基于docker搭建redis-sentinel集群的方法示例

    1.概述 Redis 集群可以在一组 redis 节点之间实现高可用性和 sharding.在集群中会有 1 个 master 和多个 slave 节点.当 master 节点失效时,应选举出一个 slave 节点作为新的 master.然而 Redis 本身(包括它的很多客户端)没有实现自动故障发现并进行主备切换的能力,需要外部的监控方案来实现自动故障恢复. Redis Sentinel 是官方推荐的高可用性解决方案.它是 Redis 集群的监控管理工具,可以提供节点监控.通知.自动故障恢复和

  • PHP使用SOAP调用API操作示例

    本文实例讲述了PHP使用SOAP调用API操作.分享给大家供大家参考,具体如下: /*图片转换为 base64格式编码*/ function base64EncodeImage($image_file) { $base64_image = ''; $image_info = getimagesize($image_file); $image_data = fread(fopen($image_file, 'r'), filesize($image_file)); //$base64_image

  • vue 使用外部JS与调用原生API操作示例

    本文实例讲述了vue 使用外部JS与调用原生API操作.分享给大家供大家参考,具体如下: vue 使用外部JS 概要 在开发时我们会经常需要使用到外部的JS,这样我们需要引入外部js,然后进行使用. 实现方法 我们在开发的过程中需要使用到 sha256 将用户的密码进行加密传输. 我们对js进行一点点改造. function sha256_digest(data) { sha256_init(); sha256_update(data, data.length); sha256_final();

随机推荐