如何通过索引名(通配符)筛选Elasticsearch索引列表
如何获取Elasticsearch中以
call-开头的索引列表 没问题!要快速筛选出所有名称以call-开头的索引,不用处理海量的全索引结果,有几个简单实用的方法,我给你详细说明:
方法1:用Elasticsearch原生通配符直接筛选(推荐)
这是最直接的方式,不需要额外工具,利用_cat/indices的路径通配符就能精准匹配:
GET _cat/indices/call-*?v=false&h=index
拆解一下参数的作用:
call-*:通配符规则,匹配所有以call-开头的索引名称v=false:关闭表头输出,只返回纯索引名h=index:指定只返回index列的数据,去掉其他比如分片、状态之类的冗余信息
执行后会得到每行一个索引的结果:
call-staging-201804 call-staging-201805 call-dev-201804 call-dev-201805
如果想要和你示例一样,把所有索引名放在同一行用空格分隔,可以结合命令行的tr工具(适用于Linux/macOS环境):
curl -XGET 'http://你的ES地址:9200/_cat/indices/call-*?v=false&h=index' | tr '\n' ' '
输出就会变成:
call-staging-201804 call-staging-201805 call-dev-201804 call-dev-201805
方法2:结合grep过滤(命令行环境)
如果你习惯用grep做文本过滤,也可以先拉取所有索引,再筛选出目标结果:
curl -XGET 'http://你的ES地址:9200/_cat/indices?v=false&h=index' | grep '^call-'
这里^call-是正则表达式,专门匹配行首以call-开头的内容。同样用tr可以转成空格分隔的单行输出:
curl -XGET 'http://你的ES地址:9200/_cat/indices?v=false&h=index' | grep '^call-' | tr '\n' ' '
⚠️ 注意:如果你的Elasticsearch开启了账号密码认证,需要在curl命令里加上-u 用户名:密码参数才能正常访问哦。
内容的提问来源于stack exchange,提问作者Xin
相关产品推荐
相关产品推荐

