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

Нет упоминания о фильтре диапазона. Как добавить несколько фильтров в тело запроса?

0 ответов

Другие вопросы по тегам