获取Elasticsearch cat api中过滤后的响应



我计划使用_cat/shards API获取ES集群中所有主分片的信息,但我没有看到任何选项只能在API响应中获取主分片,我尝试在h=index,store,prirep:p,index&v中使用prirep:p,但它也不起作用filter_pathfilter_path=prirep:p,是否有任何方法可以过滤ES的cat API中的响应。

ES的样本响应

791261 STARTED 563.3mb p      my_index
789324 STARTED 563.2mb p      my_index
791140 STARTED 563.1mb p      my_index
789066 STARTED 562.8mb p      my_index
789896 STARTED 562.7mb p      my_index
791138 STARTED 562.2mb r      my_index
789993 STARTED 562.2mb r      my_index

我想要的是下面的响应,注意r(副本)分片在响应中被删除。

791261 STARTED 563.3mb p      my_index
789324 STARTED 563.2mb p      my_index
791140 STARTED 563.1mb p      my_index
789066 STARTED 562.8mb p      my_index
789896 STARTED 562.7mb p      my_index

我不想使用jq解析响应,如此SO答案所示,因为我也将实现代码并在浏览器中使用Get请求。

我知道你对文本处理不感兴趣。但我在linux中为需要它的人写这个答案。
curl -s "[elastic-ip]:9200/_cat/shards" |awk '$3=="p"'

最新更新