使用searchkick为过滤搜索实现视图

时间:2016-12-07 22:50:52

标签: ruby-on-rails elasticsearch filtering aggregation searchkick

我正在使用ElasticSearch和Searchkick创建搜索应用。一切都很好,但我很难实现分面(聚合)结果的视图。防爆。我有100种材料,其中20种被归类为“铝”,其中80种被归类为“铜”。在我看来,我想勾选一个“铝”过滤器,只看到铝的结果。然后,我可以“取消选中”过滤器并再次查看所有结果。我该怎么做呢?这是我能够解决的问题,但并不完全符合我的要求。它只是将查询重新设置为您遇到的任何键。

#controller.rb
def index
  query = params[:query].presence || '*'
  @materials = Material.search query, aggs: [:section, :cat_1, :cat_2, :cat_3]
end

#index.haml
.col-md-4
  .col-md-12
    - if @material.aggs.present?
      - if @material.aggs["section"]["buckets"].count > 1
        .widget
          %h4 Filter by Section
            - @materials.aggs["section"]["buckets"].each do |filter|
              .list-group
                = link_to "/materials?query=#{filter["key"]}", :class => "list-group-item list-group-item-action" do
                  = filter["key"]
                  %span.badge
                    = filter["doc_count"]

0 个答案:

没有答案