使用mongoid-elasticsearch gem对搜索结果进行排序

时间:2014-01-29 12:04:20

标签: ruby-on-rails ruby ruby-on-rails-4 elasticsearch mongoid

我正在尝试对搜索进行排序。我正在使用gem mongoid-elasticsearch进行搜索。这是我的模型配置:

class ActivityLog
  include Mongoid::Document
  include Mongoid::Timestamps
  include Mongoid::Elasticsearch
  elasticsearch!(
    {
      wrapper: :load,
      sort: [
        { created_at: "desc" }
      ]
    }
  )

  field :type, type: String
end

此配置不会引发任何错误,但它似乎没有任何影响,因为搜索结果是随机列出的。

我想我正在按照文档实现配置:

Check mongoid-elasticsearch documentation here

Check elasticsearch documentation here

我的搜索查询btw是:

ActivityLog.es.search(params[:query], page: params[:page]).results.paginate(per_page: 5, page: params[:page])

2 个答案:

答案 0 :(得分:0)

你应该删除数据包装器:

elasticsearch!(
  {
    wrapper: :load,
    sort: { created_at: "desc" }
  }
)

答案 1 :(得分:0)

与在Elasticsearch本身中执行此操作的方式相同

ActivityLog.es.search({
  body: {
    query: {
      query_string: {
        query: params[:search]
      }
    },
    sort: [
        {created_at: {order: "asc"}},
    ]
  })