繁体   English   中英

按Tire / ElasticSearch中的整个字段值分组

[英]Group by entire field value in Tire/ElasticSearch

我正在使用Tire ruby​​gem连接到ElasticSearch。 如何根据特定字段的值返回构面?

例如,我有一个领域areas ,我想显示前10个区域作为过滤器选项:

地区

  • 上东城22
  • 西村15
  • 苏豪8
  • 等等...
def self.search(params={})
        tire.search(page: 1 || params[:page], per_page: 10, load: true) do
          # Set up query
          query do
            boolean do
              must { string params[:query], default_operator: "AND" } if params[:query].present?
              must { range :price, { gte: (params[:min_price] || 0), lte: params[:max_price] } } if params[:max_price].present?
            end
          end
          # Facets to return
          # this is where I get stuck:
          facet 'areas' do
            terms [:area_name], size: 10
          end
       end
end

facet块仅返回:

{"areas"=>{"_type"=>"terms", "missing"=>5754, "total"=>0, "other"=>0, "terms"=>[]}}

即使所有记录的区域名称都有一个值。

方面是根据查询返回的文档计算得出的,因此,如果您未获得任何匹配,则不会计算任何方面。 您的方面定义不正确,应将字段名称作为符号或字符串传递,请参阅https://github.com/karmi/tire/blob/master/test/integration/facets_test.rb#L16

暂无
暂无

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

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