30

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

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

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

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

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

4

5 回答 5

65

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

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

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

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

于 2018-02-05T10:45:43.100 回答
6

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

kafka-topics.sh --zookeeper 10.0.0.160:2181 --delete --topic giorgos-topic1,giorgos-topic2,giorgos-topic3,...
于 2018-11-13T12:31:19.340 回答
1

如果抱怨类似,请添加单引号('giorgos-.* ')no matches found: giorgos-.*

./bin/kafka-topics.sh --zookeeper localhost:2181 --delete --topic 'giorgos-.*'
于 2019-01-07T04:13:29.903 回答
1

只是为了添加到接受的答案, * 通配符需要以“。”开头

在我的经验中:

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

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

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

于 2021-03-24T01:17:46.170 回答
-2

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

  1. 连接到动物园管理员 CLI。

zookeeper-shell.bat 本地主机:2181

您将收到一条消息 - “欢迎来到 zookeeper!”

  1. 然后键入以下命令,所有主题都将被删除。

删除所有/经纪人/主题

我自己对此进行了测试,它对我有用。

于 2021-01-15T17:03:06.230 回答