SearchKick search_data 与可搜索

SearchKick search_data vs searchable

为了这个问题,假设我有两个模型:

出于搜索目的,我想进行两次不同的搜索:


  1. 如果我只有模型字段到 ElasticSearch 字段的直接映射,是否需要 search_data?例如,在我的 Author 模型上 只有 searchkick searchable %i[name] 是否足够,或者我是否还需要:
def search_data
  {
    name: name
  }
end
  1. 如何在 Searchkick 中定义嵌套数据来搜索 BookAuthor.name?目前,我会做这样的事情,但是,从 README 的 Nested Data 部分看来,可能还有另一种方法可以完成同样的事情。
def search_data
  {
    name: name,
    author_name: author.name
  }
end
  1. 如果一个 Book 多个 Author 怎么办?按任何作者姓名搜索书籍的建议方法是什么?像这样的东西是迄今为止我能想到的最好的东西:
def search_data
  {
    name: name,
    author_names: author.pluck(:name)
  }
end
  1. 如果只需要模型字段,则不需要定义search_data。 Searchkick 会自动执行此操作。您可以使用 Author.first.search_data.

  2. 进行检查
  3. Searchkick 对嵌套数据的支持有限。你给的例子看起来不错。

  4. 这正是针对多位作者的建议。