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

时间:2018-02-05 10:30:37

标签: apache-kafka

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

giorgos-topic1

用于删除单个主题(例如./bin/kafka-topics.sh --zookeeper localhost:2181 --delete --topic giorgos-topic1 )的命令如下:

giorgos-*

是否可以使用单个命令删除多个列,并且可能使用正则表达式/通配符(例如 let url='http://localhost:4200/#error=access_denied&error_description=AADB2C90118%3a+The+user+has+forgotten+their+password.%0d%0aCorrelation+ID%3a+a7916eb9-4404-4cc5-b5a3-ee3211237566%0d%0aTimestamp%3a+2018-02-05+09%3a19%3a07Z%0d%0alogin_hint%3a+kzahid%40opm.co.uk%0d%0a&state=da2d6e3c-cb6f-1d3b-909b-c6412325b3'; let result=url.match(/error_description=([\s\S]*?)\./)[1].split('+'); result.shift(); console.log(result.join(' ')); )而不是逐个键入需要删除的所有列?

5 个答案:

答案 0 :(得分:18)

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

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

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

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

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

如果抱怨no matches found: giorgos-.*

,请添加单引号('giorgos-。*')。
./bin/kafka-topics.sh --zookeeper localhost:2181 --delete --topic 'giorgos-.*'

答案 3 :(得分:0)

只是为了添加到已接受的答案中,* 通配符需要以 '.' 开头

以我的经验:

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

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

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

答案 4 :(得分:-1)

这是一次性删除所有主题的最简单方法。 请按照以下步骤操作:

  1. 连接到zookeeper CLI。
<块引用>

zookeeper-shell.bat 本地主机:2181

你会收到一条消息——“欢迎使用zookeeper!”

  1. 然后输入以下命令,所有主题都将被删除。
<块引用>

删除所有/brokers/topics

我自己测试过,它对我有用。