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