我正在使用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"]