在logstash中使用elasticsearch过滤器

3pvhb19x  于 2021-06-10  发布在  ElasticSearch
关注(0)|答案(1)|浏览(479)

我正在尝试使用logstash上的ElasticSearch过滤器来丰富数据。
我有两个索引,我的目标是从其中一个索引中获取一些数据,并将其添加到另一个索引中。
我配置了一个logstash过滤器,在我的elasticsearch中进行搜索,如果有匹配的话,输出就转到索引。
但是我的过滤器不能正常工作,因为当我测试过滤器时,我发现了这个错误

[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

我认为模板中的变量和ElasticSearch之间存在一些问题
我的日志是7.3.2,我的是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!
fjnneemd

fjnneemd1#

如果您处理的事件没有[ip]字段,那么sprintf引用将不会被替换,您将得到该错误。
请注意,ip和ip是不同的字段。不确定%{[ip]}是否需要双引号。

相关问题