使用Elasticsearch的多个构面过滤器

Mol*_*far 3 ruby ruby-on-rails ruby-on-rails-3 elasticsearch tire

如何将多个滤镜应用于刻面(带轮胎宝石)?我有一个代码:

facet "packages" do
  terms :package
  facet_filter :terms, producer: [*params[:producer]] if params[:producer].present?
  facet_filter :terms, category_id: [*params[:category_id]] if params[:category_id].present?
end
Run Code Online (Sandbox Code Playgroud)

但它似乎只适用于最后一个过滤器.但我需要他们两个.

con*_*t47 9

试试这个

my_filter = []
my_filter << {:terms => {:producer => [*params[:producer]] }} if params[:producer].present?
my_filter << {:terms => { :producer => [*params[:category_id]] }} if params[:category_id].present?

facet "packages" do
  terms :package
  facet_filter :and, my_filter
end
Run Code Online (Sandbox Code Playgroud)