前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ElasticSearch常用操作命令

ElasticSearch常用操作命令

作者头像
summerking
发布2022-09-19 11:36:52
7690
发布2022-09-19 11:36:52
举报
文章被收录于专栏:summerking的专栏

# 删除所有数据

curl -XDELETE 'http://192.168.0.8:29200/_all'

# 查询cat API

如果经常在命令行环境下工作,cat API 对你会非常有用。用 Linux 的 cat 命令命名,这些 API 也就设计成像 *nix 命令行工具一样工作了。

他们提供的统计和前面已经讨论过的 API ( 健康、节点统计等等 ) 是一样的。但是输出以表格的形式提供,而不是 JSON。对于系统管理员来说这是非常方便的,你仅仅想浏览一遍集群或者找出内存使用偏高的节点而已。

通过 GET 请求发送 cat 命名可以列出所有可用的 API:

代码语言:javascript
复制
[root@summer ~]# curl xxx.xxx.xxx.xxx:29200/_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

许多 API 看起来很熟悉了 ( 是的,顶上还有一只猫:) )。让我们看看 cat 的健康检查 API:

代码语言:javascript
复制
[root@summer ~]# curl xxx.xxx.xxx.xxx:29200/_cat/health
1603246165 10:09:25 elasticsearch green 2 2 20 10 0 0 0 0 - 100.0%

首先你会注意到的是响应是表格样式的纯文本,而不是 JSON。其次你会注意到各列默认是没有表头的。这都是模仿 *nix 工具设计的,因为它假设一旦你对输出熟悉了,你就再也不想看见表头了。

# 要启用表头,添加 ?v 参数即可:

代码语言:javascript
复制
[root@summer ~]# curl xxx.xxx.xxx.xxx:29200/_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
1603246172 10:09:32  elasticsearch green           2         2     20  10    0    0        0             0                  -                100.0%

嗯,好多了。我们现在看到时间戳、集群名称、状态、集群中节点的数量等等—所有信息和集群健康 API 返回的都一样。

让我们再看看 cat API 里面的节点统计 :

代码语言:javascript
复制
[root@summer ~]# curl xxx.xxx.xxx.xxx:29200/_cat/nodes?v
ip          heap.percent ram.percent cpu load_1m load_5m load_15m node.role master name
xxx.xxx.xxx.xxx           34          47   1    0.22    0.27     0.37 mdi       -      es0
xxx.xxx.xxx.xxx           49         100   3    1.67    2.17     2.10 mdi       *      es0

我们看到集群里节点的一些统计,不过和完整的 节点统计 输出相比而言是非常基础的。你可以包含更多的指标,但是比起查阅文档,让我们直接问 cat API 有哪些可用的吧。

# 你可以过对任意 API 添加 ?help 参数来做到这点:

代码语言:javascript
复制
GET /_cat/nodes?help

id               | id,nodeId               | unique node id
pid              | p                       | process id
host             | h                       | host name
ip               | i                       | ip address
port             | po                      | bound transport port
version          | v                       | es version
build            | b                       | es build hash
jdk              | j                       | jdk version
disk.avail       | d,disk,diskAvail        | available disk space
heap.percent     | hp,heapPercent          | used heap ratio
heap.max         | hm,heapMax              | max configured heap
ram.percent      | rp,ramPercent           | used machine memory ratio
ram.max          | rm,ramMax               | total machine memory
load             | l                       | most recent load avg
uptime           | u                       | node uptime
node.role        | r,role,dc,nodeRole      | d:data node, c:client node
master           | m                       | m:master-eligible, *:current master
...
...

( 注意这个输出为了页面简洁而被截断了 )。

第一列显示完整的名称,第二列显示缩写,第三列提供了关于这个参数的简介。现在我们知道了一些列名了,我们可以用 ?h 参数来明确指定显示这些指标:

代码语言:javascript
复制
GET /_cat/nodes?v&h=ip,port,heapPercent,heapMax

ip            port heapPercent heapMax
xxx.xxx.xxx.xxx 9300          53 990.7mb

因为 cat API 试图像 *nix 工具一样工作,你可以使用管道命令将结果传递给其他工具,比如 sort 、 grep 或者 awk 。例如,通过以下方式可以找到集群中最大的索引:

代码语言:javascript
复制
% curl 'localhost:9200/_cat/indices?bytes=b' | sort -rnk8

yellow test_names         5 1 3476004 0 376324705 376324705
yellow .marvel-2014.08.19 1 1  263878 0 160777194 160777194
yellow .marvel-2014.08.15 1 1  234482 0 143020770 143020770
yellow .marvel-2014.08.09 1 1  222532 0 138177271 138177271
yellow .marvel-2014.08.18 1 1  225921 0 138116185 138116185
yellow .marvel-2014.07.26 1 1  173423 0 132031505 132031505
yellow .marvel-2014.08.21 1 1  219857 0 128414798 128414798
yellow .marvel-2014.07.27 1 1   75202 0  56320862  56320862
yellow wavelet            5 1    5979 0  54815185  54815185
yellow .marvel-2014.07.28 1 1   57483 0  43006141  43006141
yellow .marvel-2014.07.21 1 1   31134 0  27558507  27558507
yellow .marvel-2014.08.01 1 1   41100 0  27000476  27000476
yellow kibana-int         5 1       2 0     17791     17791
yellow t                  5 1       7 0     15280     15280
yellow website            5 1      12 0     12631     12631
yellow agg_analysis       5 1       5 0      5804      5804
yellow v2                 5 1       2 0      5410      5410
yellow v1                 5 1       2 0      5367      5367
yellow bank               1 1      16 0      4303      4303
yellow v                  5 1       1 0      2954      2954
yellow p                  5 1       2 0      2939      2939
yellow b0001_072320141238 5 1       1 0      2923      2923
yellow ipaddr             5 1       1 0      2917      2917
yellow v2a                5 1       1 0      2895      2895
yellow movies             5 1       1 0      2738      2738
yellow cars               5 1       0 0      1249      1249
yellow wavelet2           5 1       0 0       615       615

通过添加 ?bytes=b ,我们关闭了人类可读的数字格式化,强制它们以字节数输出。随后通过管道命令将输出传递给 sort 让索引按大小( 第八列 )排序

不幸的是,你会注意到 Marval 索引也出现在结果中,但是我们目前并不真正在意这些索引。让我们把结果传递给 grep 命令来移除提到 Marval 的数据:

代码语言:javascript
复制
% curl 'localhost:9200/_cat/indices?bytes=b' | sort -rnk8 | grep -v marvel

yellow test_names         5 1 3476004 0 376324705 376324705
yellow wavelet            5 1    5979 0  54815185  54815185
yellow kibana-int         5 1       2 0     17791     17791
yellow t                  5 1       7 0     15280     15280
yellow website            5 1      12 0     12631     12631
yellow agg_analysis       5 1       5 0      5804      5804
yellow v2                 5 1       2 0      5410      5410
yellow v1                 5 1       2 0      5367      5367
yellow bank               1 1      16 0      4303      4303
yellow v                  5 1       1 0      2954      2954
yellow p                  5 1       2 0      2939      2939
yellow b0001_072320141238 5 1       1 0      2923      2923
yellow ipaddr             5 1       1 0      2917      2917
yellow v2a                5 1       1 0      2895      2895
yellow movies             5 1       1 0      2738      2738
yellow cars               5 1       0 0      1249      1249
yellow wavelet2           5 1       0 0       615       615

瞧!在传递给 grep ( 通过 -v 来过滤掉不需要匹配的数据 ) 之后,我们得到了一个没有 Marval 混杂的索引排序列表了。

这只是命令行上 cat 的灵活性的一个简单示例。一旦你习惯了使用 cat ,你会发现它和其他所有 *nix 工具一样并且开始疯狂的使用管道、排序和过滤。如果你是一个系统管理员并且永远都是 SSH 登录到设备上,那么当然要花些时间来熟悉 cat API 了。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-01-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • # 删除所有数据
  • # 查询cat API
  • # 要启用表头,添加 ?v 参数即可:
  • # 你可以过对任意 API 添加 ?help 参数来做到这点:
相关产品与服务
Elasticsearch Service
腾讯云 Elasticsearch Service(ES)是云端全托管海量数据检索分析服务,拥有高性能自研内核,集成X-Pack。ES 支持通过自治索引、存算分离、集群巡检等特性轻松管理集群,也支持免运维、自动弹性、按需使用的 Serverless 模式。使用 ES 您可以高效构建信息检索、日志分析、运维监控等服务,它独特的向量检索还可助您构建基于语义、图像的AI深度应用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档