Multiple Faceted Filters with Elasticsearch

How can I apply multiple filters to a face (with tires)? I have a code:

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

      

But only the last filter seems to apply. But I need both.

+3
ruby ruby-on-rails ruby-on-rails-3 elasticsearch tire


source to share


2 answers


try it



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

      

+9


source to share


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

facet "packages" do
  terms :package
  facet_filter(:and, my_filter) if my_filter.present?
end

      



+1


source to share







All Articles
Loading...
X
Show
Funny
Dev
Pics