Curl-запрос Elasticsearch: список индексов с 0 документами

Я пытаюсь получить список всех моих индексов Elasticsearch с 0 документами.

Мой подход заключался в том, чтобы запросить _cat/indices

curl -GET 'http://localhost:9200/_cat/indices' -d '{
    "query": { "match": { "docs.count": "0" } }
}'

Но, похоже, это не работает, поскольку я вижу индексы с более чем 0 перечисленными документами.

Cat indices документацию можно найти здесь: https://www.elastic.co/guide/en/elasticsearch/reference/1.6/cat-indices.html.

Какие-либо предложения?

Спасибо.


person halpsb    schedule 28.10.2015    source источник
comment
Почему бы вам вместо этого не получить grep результат?   -  person Andrei Stefan    schedule 28.10.2015
comment
Фактически, я пытаюсь позже удалить эти индексы из моего кластера (те, которые имеют 0 документов). Единственное, что у них общего - это одинаковое количество документов. Смогу ли я grep на docs.count?   -  person halpsb    schedule 28.10.2015


Ответы (1)


Я считаю, что awk и cat API были бы лучшим выбором. Вы можете использовать приведенную ниже команду, чтобы получить то, что вы ищете -

curl -GET 'http://localhost:9200/_cat/indices' 2>/dev/null | awk ' ($6 == 0) {print $3}'
person Vineeth Mohan    schedule 29.10.2015
comment
Спасибо, это хорошо работает! Есть ли способ легко удалить возвращенные элементы с помощью этого метода? - person halpsb; 29.10.2015
comment
Думаю, на данный момент других методов у нас нет. - person Vineeth Mohan; 29.10.2015
comment
Я пытался применить -XDELETE к вашей команде разными способами, но не смог заставить ее работать :( Есть идеи? - person halpsb; 29.10.2015
comment
Что вы пытались с помощью DELETE - person Vineeth Mohan; 29.10.2015