【发布时间】:2016-06-21 21:46:37
【问题描述】:
我需要从字符串中提取数值并存储在新字段中。我们可以通过脚本字段来做到这一点吗?
例如:1 hello 3 测试
我需要提取 1 和 3。
【问题讨论】:
标签: elasticsearch lucene kibana kibana-4
我需要从字符串中提取数值并存储在新字段中。我们可以通过脚本字段来做到这一点吗?
例如:1 hello 3 测试
我需要提取 1 和 3。
【问题讨论】:
标签: elasticsearch lucene kibana kibana-4
如果您使用的是 elasticsearch,您可以通过 logstash 执行此操作。
使用类似的配置运行 logstash 进程
input {
elasticsearch {
hosts => "your_host"
index => "your_index"
query => "{ "query": { "match_all": {} } }"
}
}
filter {
grok {
match => { "your_string_field" => "%{NUMBER:num1} %{GREEDYDATA:middle_stuff} %{NUMBER:num2} %{GREEDYDATA:other_stuff}" }
}
mutate {
remove_field => ["middle_stuff", "other_stuff"]
}
}
output{
elasticsearch {
host => "yourhost"
index => "your index"
document_id => %{id}
}
}
这实际上会用另外两个字段 num1 和 num2 覆盖索引中的每个文档,它们对应于您要查找的数字。这只是一种快速而肮脏的方法,会占用更多内存,但可以让您一次完成所有分解,而不是在可视化时间。
我确信有一种方法可以通过脚本来做到这一点,看看你返回特定组的 groovy 正则表达式匹配。
也不能保证我的配置表示是正确的,因为我现在没有时间测试它。
祝你有美好的一天!
【讨论】: