Как отфильтровать записи на основе одного параметра из одного индекса в logstash

#elasticsearch #logstash

#elasticsearch #logstash

Вопрос:

 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" } }

Я хочу, чтобы это основывалось на отфильтровывании индекса по городу `{ «filter_index»: { «name»:»ABC», «зарплата»: 56000, «город»: «Мумбаи» },

{ «имя»: «ДЖЕК», «зарплата»: 26000, «город»: «Мумбаи» }
}`

Комментарии:

1. Не могли бы вы переформатировать свою конфигурацию, она и так не разборчива. Также, пожалуйста, объясните, что вам нужно, возможно, приведя пример. Помогите нам помочь вам!

2. @val Пожалуйста, проверьте

Ответ №1:

Поскольку query параметр использует query_string синтаксис запроса, вы можете просто инвертировать запрос следующим образом:

 query => "NOT(city:mumbai)"
  

Комментарии:

1. Что не работает? Вы получаете сообщение об ошибке? Если да, то какой? Можете ли вы описать, какое поведение вы наблюдаете и чего ожидаете вместо этого?

2. он дает мне все записи

3. Что произойдет, если вы запустите это в Kibana Dev Tools GET sample_index/_search?q=NOT(city:mumbai) ? Какие записи вы получаете?

4. В kibana dev tools он работает отлично, но в параметре запроса logstash создается новый индекс, но со всеми записями

5. Итак, проблема в том, что у вас есть query=>'{"query":{"match_all":{}}}' на входе, поэтому все записи сбываются. Вам нужно ограничить, какие записи вы хотите присоединять к входным данным, а не к фильтру.