Elasticsearch-ruby несколько фильтров
Я обновляю свое приложение Rails с 4.0 до 4.1 и в рамках этого обновления я переключаюсь с tire
в elaticsearch-ruby
обрабатывать запросы эластичного поиска. Шина может добавлять несколько фильтров / запросов в тело запроса, но когда я переключаюсь на новый синтаксис, кажется, что применяется только последний добавленный фильтр. Некоторые примеры, которые я протестировал, приведены ниже.
код шины:
self.tire.search do
if args[:from] # true
filter :range, :created_at => { gte: args[:from] }
end
if args[:active] # true
filter :terms, :active => [true]
end
end
сформировано тело запроса шины:
filter: {
and: [
{
range: {
sent_at: {
gte: Wed, 01 Nov 2017
}
}
}, {
terms: {
active: [true]
}
}
]
}
код эластичного поиска-рубина:
definition = Search.new do
if args[:from] # true
filter do
range :created_at do
gte args[:from]
end
end
end
if args[:active] # true
filter do
terms active: [true]
end
end
end
Сформировано тело запроса asticsearch-ruby:
{:filter=>{:terms=>{:active=>[true]}}}
Нет упоминания о фильтре диапазона. Как добавить несколько фильтров в тело запроса?