elasticsearch索引列表排除系统索引(.xxx)
排除以.开头的索引(通常是系统索引、隐藏索引如.kibana、.security、.monitoring-*等),最简单直接的方式是利用_cat/indices API 支持的索引模式(index pattern),使用排除语法 *, -.*。
推荐写法
1 | GET /_cat/indices/*,-.*?v&s=index |
*→ 包含所有索引,-.*→ 排除所有以.开头的索引?v→ 显示表头(verbose,可读性更好)&s=index→ 按索引名称排序(可选,但推荐,便于查看)
等价写法(效果完全相同):
1 | GET /_cat/indices/*,-.*?v |
在Kibana Dev Tools示例
1 | GET _cat/indices/*,-.*?v&h=health,status,index,pri,rep,docs.count,store.size,pri.store.size&s=index |
- 加了
&h=...可以自定义只显示你关心的列(健康状态、分片、主/副本、文档数、占用空间等) - 常见列:health status index pri rep docs.count store.size pri.store.size
为什么用 *, -.* 而不是其他方式?
- Elasticsearch 的索引模式支持
+(强制包含)和-(强制排除),*,-.*是社区公认、最简洁的排除“点开头索引”的写法。 - 直接
GET _cat/indices默认行为在较新版本(7.10+ / 8.x)可能会显示部分隐藏/系统索引(取决于index.hidden设置和数据流),所以显式排除更可靠。
一行命令统计用户索引数量
1 | curl -X GET "http://your-es-endpoint:9200/_cat/indices/*,-.*?v" | grep -v "^$" | wc -l |