Как удалить несколько тем в Apache Kafka

Предполагая, что у меня есть несколько тем с одинаковым префиксом, например:

giorgos-topic1
giorgos-topic2
giorgos-topic3
...

Команда, используемая для удаления одной темы (скажем, giorgos-topic1), следующая:

./bin/kafka-topics.sh --zookeeper localhost:2181 --delete --topic giorgos-topic1

Можно ли удалить несколько столбцов, используя одну команду и, возможно, регулярное выражение/подстановочный знак (например, giorgos-*) вместо того, чтобы вводить все имена тем, которые нужно удалить по одному?

Ответ 1

Да, вы можете использовать регулярные выражения при удалении тем с kafka-topics.sh инструмента kafka-topics.sh:

Например, чтобы удалить все темы, начинающиеся с giorgos-:

./bin/kafka-topics.sh --zookeeper localhost:2181 --delete --topic 'giorgos-.*'

Используя API администратора, вы также можете удалить несколько тем одновременно, см. AdminClient.deleteTopics

Ответ 2

В тех случаях, когда регулярное выражение невозможно, мы можем использовать разделенный запятыми список названий тем для удаления тем.

kafka-topics.sh --zookeeper 10.0.0.160:2181 --delete --topic giorgos-topic1,giorgos-topic2,giorgos-topic3,...

Ответ 3

Пожалуйста, добавьте одиночную кавычку ('giorgos-. *'), Если она жалуется, что no matches found: giorgos-.*

./bin/kafka-topics.sh --zookeeper localhost:2181 --delete --topic 'giorgos-.*'