我试图通过logstash索引ElasticSearch中的文档。我试图索引的文件中的一个例子如下
GET firstname=john&lastname=smith 400
我的目标是创建一个类似于以下内容的索引
HTTPMethod: GET
firstname : john
lastname: smith
query_time : 400
我到目前为止做了以下
filter {
grok{
match => {"message" => "%{WORD:HttpMethod} %{GREEDYDATA:KVText} %{NUMBER:time:int}"}
}
kv {
source => "KVText"
value_split => "&"
remove_field => [ "KVText" ]
}
}
但是,当我执行logstash conf文件时,我会看到以下内容
"query_time": 400,
"message": "GET firstname=john&lastname=smith 400\r",
"HttpMethod": "GET",
"firstname=john": "lastname=smith"
我没有将索引作为key1 = value1格式作为离散值。例如firstname = john lastname = smith
此外,每当我对日志文件进行更改时,logstash进程都不会实时选择索引更改。我必须重命名该文件并重新启动logstash。我知道它与我的logstash.conf中的since_db路径有关。
任何指针都非常受欢迎。
由于 尼克
答案 0 :(得分:2)
您正在以错误的方式配置kv过滤器。
value_split
param告诉过滤器用什么char来分割一个键/值对(你应该把" ="),而field_split
配置告诉什么char到用于从字符串中拆分对。尝试使用:
kv {
source => "KVText"
value_split => "="
field_split => "&"
remove_field => [ "KVText" ]
}