如何在Apache Kafka中删除多个主题

Gio*_*ous 14 apache-kafka

假设我有许多具有相同前缀的主题,例如:

giorgos-topic1
giorgos-topic2
giorgos-topic3
...
Run Code Online (Sandbox Code Playgroud)

用于删除单个主题的命令(例如giorgos-topic1)如下:

./bin/kafka-topics.sh --zookeeper localhost:2181 --delete --topic giorgos-topic1
Run Code Online (Sandbox Code Playgroud)

是否可以使用单个命令删除多个列,并且可能使用正则表达式/通配符(例如giorgos-*),而不是逐个键入需要删除的所有列?

Mic*_*son 25

是的,您可以在使用该kafka-topics.sh工具删除主题时使用类似正则表达式的表达式:

例如,要删除以giorgos-下列开头的所有主题:

./bin/kafka-topics.sh --zookeeper localhost:2181 --delete --topic 'giorgos-.*'
Run Code Online (Sandbox Code Playgroud)

使用Admin API,您也可以一次删除多个主题,请参阅 AdminClient.deleteTopics


Ama*_*rav 5

如果无法使用正则表达式,我们可以使用逗号分隔的主题名称列表来删除主题。

kafka-topics.sh --zookeeper 10.0.0.160:2181 --delete --topic giorgos-topic1,giorgos-topic2,giorgos-topic3,...
Run Code Online (Sandbox Code Playgroud)


fam*_*men 5

只是为了添加到接受的答案中,* 通配符前面需要加上“.”

在我的经验中:

--delete --topic '_confluence-controlcenter-5-3-1-1-.*'有效

--delete --topic '_confluence-controlcenter-5-3-1-1-*' 不起作用

注意:我会将此添加为评论,但没有足够的代表。