如何解决对 state_id 过滤器的 Searchkick 不起作用 app/models/content.rb重新索引错误app/models/contents.rby查找匹配项没有匹配项
我正在尝试更新我的 searchkick 查询以过滤 state_id,但它失败了。我尝试使用 Elastic Search 路由并将其添加到搜索字段中。
路由尝试
app/models/content.rb
class Content < ApplicationRecord
include HashtaggableItem
include PgSearch::Model
searchkick word_start: %i[body title state state_slug user],callbacks: :async,routing: true
acts_as_paranoid
belongs_to :user
delegate :full_name,to: :user,allow_nil: true
belongs_to :shared_link,optional: true
belongs_to :state,foreign_key: :state_id
delegate :name,:abbr,:slug,to: :state,prefix: true,allow_nil: true
has_many :upVotes,as: :upvotable,dependent: :destroy_async,counter_cache: true
has_many :comments,as: :commentable,counter_cache: true
validates :body,presence: true
enum content_type: { question: 0,discussion: 1,bill: 2 }
delegate :display_name,:full_name,:title,prefix: true
def search_routing
state_id
end
def search_data
{
upVotes_count: upVotes_count,body: body,title: title,state: state_name,state_slug: state_slug,user: user_full_name,created_at: created_at,updated_at: updated_at
}
end
end
重新索引错误
routing required for <index_name>
添加到 search_field
app/models/contents.rby
class Content < ApplicationRecord
include HashtaggableItem
include PgSearch::Model
searchkick word_start: %i[body title state state_slug user],callbacks: :async
acts_as_paranoid
belongs_to :user
delegate :full_name,prefix: true
def search_data
{
upVotes_count: upVotes_count,updated_at: updated_at,state_id: state_id
}
end
end
查找匹配项
Searchkick.search('*',models: search_models,where: { updated_at: { gt: since } },routing: filters[:state_id],order: sorting,boost_by_recency: { created_at: { scale: '7d',decay: 0.5 } },page: params[:page],per_page: 10)
没有匹配项
Searchkick.search('*',per_page: 10)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。