elasticsearch - 在 Logstash 中使用 Elasticsearch 过滤器
问题描述
我正在尝试使用 logstash 上的弹性搜索过滤器来丰富数据。
我有两个索引,我的目标是从其中一个获取一些数据并将其添加到另一个。
我配置了一个 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
我认为模板中的变量和弹性搜索之间存在一些问题
我的logstash是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]} 是否需要双引号。
推荐阅读
- c# - 多项目解决方案“无法加载文件或程序集'System.Web.Mvc,版本 = 5.2.4.0”,未给出项目名称
- python - 连接具有不同行数和列数的两个数据框
- php - 从更多输入单选按钮值中获取总和
- android - Gradle 同步需要很长时间才能完成解决依赖关系
- php - 无法将文件移动到挂载的网络共享文件夹
- postgresql - 如何在 Postgresql 查询中最小化 CTE 的使用
- .htaccess - .htaccess 和多个意外重定向
- c# - 我应该修改实体框架生成的类吗?
- swift - phasset 子类型 rawValue 意味着 swift
- xpath - 如何从 Camel XPathBuilder XPath 表达式中获取 Java Date 对象?