繁体   English   中英

使用ElasticSearch和Tire按嵌套元素的数量排序

[英]Sorting by number of nested elements with ElasticSearch and Tire

给定以下在称为Post的模型上的映射,是否有可能构建一个查询,以返回在特定时间范围内(例如,过去7天)按投票数排序的帖子?

mapping do
   indexes :id, type: 'integer'
   indexes :user_id, type: 'integer'
   indexes :name, boost: 10
   indexes :body # analyzer: 'snowball'
   indexes :created_at, type: 'date'
   indexes :vote_count, type: 'integer'

   indexes :topic_ids

   indexes :topics do
       indexes :id, type: 'integer'
       indexes :name, type: 'string'
    end

   indexes :votes do
       indexes :user_id, type: 'integer'
       indexes :created_at, type: 'date'
   end
end

我正在使用Tire in Rails 3.2.13。 我有一个邮政模型和一个投票模型。 帖子具有很多票,而投票属于帖子。

是的,您可以按vote_count数进行排序,也可以使用custom_score查询进行细粒度的相关性计算。

对于前者,类似:

require 'tire'

s = Tire.search do
  query do
    filtered do
      query { all }
      filter :range, 'created_at' => { from: '-7d' }
    end
  end
  sort do
    by :vote_count
  end
end

puts s.to_curl

暂无
暂无

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

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