简体   繁体   English

使用Elasticsearch的多个构面过滤器

[英]Multiple facet filters with Elasticsearch

How can I apply multiple filters to facet (with tire gem)? 如何将多个滤镜应用于刻面(带轮胎宝石)? 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 it seems to apply only the last filter. 但它似乎只适用于最后一个过滤器。 But I need both of them. 但我需要他们两个。

try this 尝试这个

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM