【问题标题】:How to filter out records based on one param from one index in logstash如何从logstash中的一个索引中过滤出基于一个参数的记录
【发布时间】:2020-09-28 16:26:02
【问题描述】:
input{
 elasticsearch{
  hosts=>["localhost"]
  index=>"sample_index"
    query=>'{"query":{"match_all":{}}}'
scroll=>"5m"
docinfo=>true
 }
 }filter{
 elasticsearch{
 hosts=>["localhost"]
 index=>"sample_index"
 query=>"NOT(city:delhi)"
   sort=>"code:asc"
  result_size=>5    
   fields=>{
   "code"=>"Code"
  "name"=>"Name"
 "city"=>"City"
"salary"=>"Salary"
}
}
}
output{
elasticsearch{
hosts=>["localhost"]
 index=>"filter_sample_index4"
   }
  }

这就是我正在做的事情。谁能找出我做错的地方

假设我有记录{ "sample_index":{ "name":"ABC", "salary":56000, "city":"mumbai" }, { "name":"XYZ", "salary":54400, "city":"DEHI" }, { "name":"QWERTY", "salary":65000, "city":"Delhi" }, { "name":"JACK", "salary":26000, "city":"mumbai" } }

我想要的是这个基于城市过滤掉索引`{ “过滤器索引”:{ “名称”:“ABC”, “工资”:56000, “城市”:“孟买” },

{ “名称”:“杰克”, “工资”:26000, “城市”:“孟买” }
}`

【问题讨论】:

  • 能否请您重新格式化您的配置,因为它不清晰。也请解释你需要什么,也许通过提供一个例子。帮助我们帮助您!
  • @val 请检查

标签: elasticsearch logstash


【解决方案1】:

由于query 参数使用query_string query syntax,您可以像这样简单地反转查询:

query => "NOT(city:mumbai)"

【讨论】:

  • 什么不起作用?你有错误吗?如果是,是哪一个?您能描述一下您观察到的行为以及您的期望吗?
  • 它给了我所有的记录
  • 如果您在 Kibana Dev Tools GET sample_index/_search?q=NOT(city:mumbai) 中运行它会发生什么?你得到什么记录?
  • 在 kibana 开发工具中它工作得非常好,但在 logstash 查询参数中它创建新索引但包含所有记录
  • 好的,所以问题是您的输入中有query=>'{"query":{"match_all":{}}}',因此所有记录都成真。您需要限制要在输入中而不是在过滤器中加入的记录。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-08
  • 1970-01-01
  • 1970-01-01
  • 2019-10-04
  • 1970-01-01
相关资源
最近更新 更多