wan*_*hao 1 elasticsearch logstash logstash-configuration
Elasticsearch 输出插件是否支持elasticsearch 的_update_by_query? https://www.elastic.co/guide/en/logstash/6.5/plugins-outputs-elasticsearch.html https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-update-by -query.html
该elasticsearch输出插件只能拨打电话到_bulk终点,即使用批量API。
如果你想调用Update by Query API,你需要使用http输出插件并自己在事件内部构造查询。如果您解释了您想要实现的目标,我可以用更多细节更新我的答案。
注意:请求此功能时出现问题,但两年后它仍处于开放状态。
更新
所以,如果你输入的事件是{"cname":"wang", "cage":11},你通过查询所有文件要更新"cname":"wang"到组"cage":11,您的查询需要这个样子的:
POST your-index/_update_by_query
{
"script": {
"source": "ctx._source.cage = params.cage",
"lang": "painless",
"params": {
"cage": 11
}
},
"query": {
"term": {
"cname": "wang"
}
}
}
Run Code Online (Sandbox Code Playgroud)
所以你的 Logstash 配置应该是这样的(你的输入可能会有所不同,但我用于stdin测试目的):
input {
stdin {
codec => "json"
}
}
filter {
mutate {
add_field => {
"[script][lang]" => "painless"
"[script][source]" => "ctx._source.cage = params.cage"
"[script][params][cage]" => "%{cage}"
"[query][term][cname]" => "%{cname}"
}
remove_field => ["host", "@version", "@timestamp", "cname", "cage"]
}
}
output {
http {
url => "http://localhost:9200/index/doc/_update_by_query"
http_method => "post"
format => "json"
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1866 次 |
| 最近记录: |