1

我正在尝试通过轮胎宝石将弹性搜索用于多租户应用程序。该应用程序有许多帐户,每个帐户都有许多用户。

用户模型:

  include Tire::Model::Search
  mapping do
    indexes :name, :boost => 10
    indexes :account_id
    indexes :company_name
  end

  def to_indexed_json
    to_json( :only => [:name, :account_id, :company_name], 
       )
  end

我想添加基于 account_id 的路由。请帮助如何实现这一点。我看到有两种方法可以指定路由。

  1. 在使用路由字段进行映射期间
  2. 使用别名

我对第一个选项感兴趣。我看到 _routing 可以作为哈希添加到映射部分。

  mapping :_routing => { :required => true, :path => :account_id } do
    indexes :name, :boost => 10
    indexes :account_id
    indexes :company_name
  end

搜索查询:

  User.tire.search do
    query do
      filtered do
          query { string('ovamsikrishna@gmail.com') },
          filter :term, :account_id => 2
      end
    end
  end

我们需要在搜索查询中指定任何内容吗?当我指定上面指定的映射(使用路由)时,索引没有发生。没有路由它工作正常。

4

1 回答 1

0

添加 account_id 作为路径有助于您在 1 个分片上累积所有相同的帐户数据。

建议在搜索查询中使用路由,以避免在每个分片上命中搜索查询。

使用Get Mapping API来验证映射是否正确设置。

于 2012-11-09T23:52:54.340 回答