ruby-on-rails - has_and_belongs_to_many的Searchkick聚合

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

我有一个Rails 5应用程序,我正在尝试对has_and_belongs_to_many关联进行聚合搜索。

这是我到目前为止的代码:

event.rb:

class Event < ApplicationRecord
  searchkick text_start: [:title]

  has_and_belongs_to_many :services
  has_and_belongs_to_many :sectors

  def search_data
    atributes.merge(
      title: title,
      description: description,
      sector_name: sectors.map(&:name),
      service_name: services.map(&:name)
    )
  end

end

events_controller.rb:
def index
  query = params[:j].presence || "*"
  conditions = {}
  conditions[:sector] = params[:sector] if params[:sector].present?
  conditions[:service] = params[:service] if params[:service].present?
  conditions[:date] = params[:date] if params[:date].present?
  @events = Event.search query, where: conditions, aggs: [:sector, :service, :date], order: {created_at: {order: "desc"}}, page: params[:page], per_page: 10
end

当我在控制台中调用Event.reindex时,我希望显示该扇区和服务已被索引,但无法正常工作。

老实说,我已经迷路了,到处乱逛,所以任何帮助将不胜感激。

最佳答案

这是最终为我工作的代码:
event.rb:

def index
    query = params[:j].presence || "*"
    conditions = {start_date: {"gte": "now/d"}}
    conditions[:sector_name] = params[:sector_name] if params[:sector_name].present?
    conditions[:service_name] = params[:service_name] if params[:service_name].present?
    conditions[:start_date] = params[:start_date] if params[:start_date].present?
    @events = Event.search query, where: conditions, aggs: [:sector_name, :service_name], order: {start_date: {order: "asc", unmapped_type: "long"}}, page: params[:page], per_page: 10
end
events_controller.rb:
def search_data
  {
    title: title,
    location: location,
    description: description,
    start_date: start_date,
    sector_name: sectors.map(&:name),
    service_name: services.map(&:name)
  }
end

关于ruby-on-rails - has_and_belongs_to_many的Searchkick聚合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38995046/

相关文章:

ruby-on-rails - 包括 'redirect_to' 方法在内的测试失败,但应用程序运行正常。 Michael Hartl 书第 9.2.2 章 (v 3.2)

mysql - 有没有办法按单一类型对具有多个属性类型的对象进行排序?

ruby-on-rails - 弃用警告 : The configuration option `config.serve_static_assets` has been renamed to `config.serve_static_files`

ruby-on-rails - 升级到 Rails 4 时批量分配失败

ruby-on-rails - Heroku 登录 windows 10

ruby-on-rails - 如何在 Elementary O.S. 上安装 rails ?

ruby - 循环扫描并单独替换匹配项

ruby - 是否有可能缩小 ruby 常量查找

ruby - 如何让 Nokogiri 与 Warbler/JRuby 一起工作

image - 根据屏幕大小显示正确的图像