elasticsearch 在logstash中使用Elasticsearch过滤器
我正在尝试使用logstash上的弹性搜索过滤器来丰富数据 我有两个索引,我的目标是从其中一个索引中获取一些数据并将其添加到另一个索引中 我配置了一个logstash过滤器,在elasticsearch中进行搜索,如果存在匹配,则输出将转到索引 但是我的过滤器不能正常工作,因为当我测试过滤器时,我发现了这个错误
elasticsearch 在logstash中使用Elasticsearch过滤器,
elasticsearch,logstash,netflow,logstash-filter,
elasticsearch,Logstash,Netflow,Logstash Filter,我正在尝试使用logstash上的弹性搜索过滤器来丰富数据 我有两个索引,我的目标是从其中一个索引中获取一些数据并将其添加到另一个索引中 我配置了一个logstash过滤器,在elasticsearch中进行搜索,如果存在匹配,则输出将转到索引 但是我的过滤器不能正常工作,因为当我测试过滤器时,我发现了这个错误 [WARN ] 2020-10-02 19:23:09.536 [[main]>worker2] elasticsearch - Failed to query elasticse
[WARN ] 2020-10-02 19:23:09.536 [[main]>worker2] elasticsearch - Failed to query elasticsearch for previous event {:index=>"logstash-*", :error=>"Unexpected character ('%' (code 37)): expected a valid value (number, String, array, object, 'true', 'false' or 'null')\n
我认为模板中的变量和弹性搜索之间存在一些问题
我的日志是7.3.2,我的ES是7.4.2
这是我的设置
Logstash.conf
input {
http{ }
}
filter {
elasticsearch {
hosts => ["127.0.0.1:9200"]
index => "logstash-*"
query_template => "search-by-ip.json"
fields => {
"id" => "[suscriberid]"
}
}
}
output {
stdout { codec => rubydebug }
}
-----------------
search-by-ip.json
{
"size": 1,
"query": { "match":{"IP": %{[ip]} } }
}
-------------------
testcase.sh
curl -XPOST "localhost:8080" -H "Content-Type: application/json" -d '{
"size": 1,
"query": { "match":{"ip": "192.168.1.4" }}
}'
```
Thanks!
如果您处理的事件没有[ip]字段,那么sprintf引用将不会被替换,您将得到该错误
请注意,ip和ip是不同的字段。不确定%{[ip]}是否需要在其周围加双引号。您的筛选器中的索引模式有问题,您可以检查与现有索引对应的logstash-*吗?