假设我有许多具有相同前缀的主题,例如:
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(' '));
)而不是逐个键入需要删除的所有列?
答案 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-.*
./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)
这是一次性删除所有主题的最简单方法。 请按照以下步骤操作:
zookeeper-shell.bat 本地主机:2181
你会收到一条消息——“欢迎使用zookeeper!”
删除所有/brokers/topics
我自己测试过,它对我有用。