Elasticsearch 中列出集群的所有索引的语法是什么?

参考回答

在 Elasticsearch 中,可以使用 Cat Indices API 列出集群中的所有索引。基本语法如下:

GET /_cat/indices?v
  • /_cat/indices 是用于查看所有索引的 API。
  • 参数 v(可选)表示输出结果中显示列名,方便阅读。

示例返回结果
执行上述命令后,可能返回如下结果:

health status index     uuid                   pri rep docs.count docs.deleted store.size pri.store.size
green  open   products  abc1234567890         1   1   1000       10           1.2mb      600kb
yellow open   orders    def9876543210         1   0   5000       50           5mb        5mb

详细讲解与拓展

1. 参数详解

/_cat/indices 默认返回结果是紧凑的。通过可选参数可以定制返回结果:
v:显示列名。
health:索引的健康状态,可能的值为:
green:所有分片都已分配。
yellow:主分片已分配,但副本分片未分配。
red:有主分片未分配。
status:索引的状态(openclose)。
index:索引名称。
docs.count:文档总数。
docs.deleted:已删除的文档数。
store.size:索引占用的存储大小。
pri.store.size:主分片占用的存储大小。


2. 获取更详细的索引信息

使用 format=json 参数返回 JSON 格式,便于程序处理:

GET /_cat/indices?format=json

返回示例:

[
  {
    "health": "green",
    "status": "open",
    "index": "products",
    "uuid": "abc1234567890",
    "pri": "1",
    "rep": "1",
    "docs.count": "1000",
    "docs.deleted": "10",
    "store.size": "1.2mb",
    "pri.store.size": "600kb"
  },
  {
    "health": "yellow",
    "status": "open",
    "index": "orders",
    "uuid": "def9876543210",
    "pri": "1",
    "rep": "0",
    "docs.count": "5000",
    "docs.deleted": "50",
    "store.size": "5mb",
    "pri.store.size": "5mb"
  }
]

3. 筛选特定索引

如果只想查看特定索引的情况,可以指定索引名称或使用通配符。例如:

GET /_cat/indices/products?v

或:

GET /_cat/indices/prod*?v

4. 列出所有索引的简单概览

如果只想查看索引名称,可以使用以下命令:

GET /_cat/indices?h=index

这会返回所有索引的名称列表,例如:

products
orders
users

5. 使用 Head 或 Kibana 可视化工具

在 Kibana 中,执行上述命令可以直接看到结果。如果使用 Elastic Head 插件,也可以方便地查看索引的列表和状态。


总结

  • 列出所有索引的基本语法是 GET /_cat/indices?v
  • 可以通过添加参数筛选特定信息(如 JSON 格式输出或仅列出索引名称)。
  • /_cat/indices 提供了索引健康状态、文档数、存储大小等详细信息,帮助用户监控和管理索引。

发表评论

后才能评论