我正在尝试通过轮胎宝石将弹性搜索用于多租户应用程序。该应用程序有许多帐户,每个帐户都有许多用户。
现在我想根据帐户 ID 索引用户。
用户模型:
include Tire::Model::Search
mapping do
indexes :name, :boost => 10
indexes :account_id
indexes :company_name
indexes :description
end
def to_indexed_json
to_json( :only => [:name, :account_id, :description, :company_name],
)
end
搜索查询:
User.tire.search do
query do
filtered do
query { string 'vamsikrishna' }
filter :term, :account_id => 1
end
end
end
过滤器工作正常,结果仅显示过滤后的帐户 ID (1)。但是,当我搜索查询字符串 1 时:
User.tire.search do
query do
filtered do
query { string '1' }
filter :term, :account_id => 1
end
end
end
假设有一个名为 1 的用户。在这种情况下,将为所有帐户 ID 为 1 的用户和该用户显示结果。这是因为我在 to_indexed_json 中添加了 account_id。现在,我怎样才能只显示名称为 1 的用户?(不是所有用户都可以在点击中使用。应该只显示名称为 1 的用户)
当没有名称或公司名称或描述为 1 的用户时,我只是不希望显示任何结果。但是,在我的情况下,正如我解释的那样,我会得到帐户 id 1 中的所有用户。