gpt4 book ai didi

ruby-on-rails - 多模型单索引方法 - 通过轮胎进行 Elasticsearch

转载 作者:行者123 更新时间:2023-12-03 00:30:22 25 4
gpt4 key购买 nike

在我的 Multi-Tenancy 应用程序(基于每个帐户的用户数的帐户)中,当用户文档发生更改时,我将如何更新特定帐户的索引。

通过 Tire gem 使用 Elasticsearch。

Rails 2.3 应用程序 - 根据 loe/tire's commit 应用更改以启用对 Rails 2.3 的支持

账号型号:

  include Tire::Model::Search

Tire.index('account_1') do
create(
:mappings => {
:user => {
:properties => {
:name => { :type => :string, :boost => 10 },
:company_name => { :type => :string, :boost => 5 }
}
},
:comments => {
:properties => {
:description => { :type => :string, :boost => 5 }
}
}
}
)
end

正如您在上面看到的,这里有两个模型用户和评论。使用多个模型解决单个索引是否正确?

在这种情况下,当单独更改用户文档或评论文档时如何更新索引?

最佳答案

通常,当您为模型编制索引时,最好将自身属性与其关联一起编制索引。因此,在这种情况下,如果您想要索引用户及其评论,您应该在用户模型中拥有索引并索引其关联引用的评论,以便轮胎回调应用于用户模型以重新索引用户对象(如果模型中有任何属性)被改变。这仅适用于您拥有索引的模型。

如果你想索引关联,你需要有钩子(Hook),在保存/销毁用户/评论模型之后索引帐户对象。或者您也可以使用 :touch => true 选项在用户/评论更改时触摸帐户模型。

示例:如果您想要索引用户和评论,

  include Tire::Model::Search
include Tire::Model::Callbacks

mapping do
indexes :id, :type => 'integer', :index => :not_analyzed
indexes :about_me, :type => 'string', :index => :snowball
indexes :name, :type => 'string', :index => :whitespace

indexes :comments do
indexes :content, :type => 'string', :analyzer => 'snowball'
end
end

所以这里的索引是在用户模型上,而 user.comments 是一个关联。希望这个例子能解释

关于ruby-on-rails - 多模型单索引方法 - 通过轮胎进行 Elasticsearch ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13374281/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com