0

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

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

领域

  • 上东区 22
  • 西村 15
  • 苏活区 8
  • ETC...
def self.search(params={})
        Tire.search(page: 1 || params[:page], per_page: 10, load: true) 做
          # 设置查询
          查询做
            布尔值
              必须 { string params[:query], default_operator: "AND" } if params[:query].present?
              必须 { range :price, { gte: (params[:min_price] || 0), lte: params[:max_price] } } 如果 params[:max_price].present?
            结尾
          结尾
          # 要返回的构面
          # 这是我卡住的地方:
          方面的“区域”做
            术语 [:area_name],大小:10
          结尾
       结尾
结尾

刻面块只返回:

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

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

4

1 回答 1

1

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

于 2013-04-23T12:01:53.253 回答