如何解决Kibana Tag Cloud不统计文本字段单词频率的问题?
解决Kibana Tag Cloud拆分单词统计的问题
因为你用的Ticket_text.keyword是keyword类型,Kibana会把整个字符串当作单个统计项,所以得先把文本拆成单个单词再统计,下面是两种可行方法:
方法一:用Runtime Field实时拆分(无需修改原数据)
- 打开Kibana的「Stack Management」→「Index Patterns」,找到你的索引模式,点击「Edit pattern」
- 滚动到「Runtime fields」,点击「Add field」
- 字段名设为
ticket_words,类型选「Keyword」,然后在脚本框里输入Painless代码:
这段代码会把每个字段值按空格拆成单个单词的数组,作为多值字段保存String[] words = doc['Ticket_text.keyword'].value.splitOnWhitespace(); emit(words); - 保存这个Runtime Field
之后创建Tag Cloud可视化:
- 新建Tag Cloud,选择对应的索引模式
- 「Metrics」选「Count」,用来统计单词出现次数
- 「Buckets」选「Split Tags」,字段选择刚创建的
ticket_words,这样就能按单个单词统计频率了
方法二:修改索引映射(需重新索引数据)
如果允许重新处理数据,也可以把Ticket_text字段的类型改成text(默认使用standard分词器,会自动按空格拆分单词):
- 先创建新的索引,设置映射:
{ "mappings": { "properties": { "Ticket_text": { "type": "text" } } } } - 用Reindex API把旧索引的数据导入新索引
- 之后在Tag Cloud里直接选择
Ticket_text字段作为拆分依据即可
内容的提问来源于stack exchange,提问作者Mehran Goodaz
相关产品推荐
相关产品推荐

