【问题标题】:Routing field in elasticsearch via tireelasticsearch中的路由字段通过轮胎
【发布时间】:2012-11-07 07:52:20
【问题描述】:

我正在尝试通过轮胎 gem 使用 elasticsearch 来开发多租户应用程序。该应用程序有许多帐户,每个帐户都有许多用户。

用户模型:

  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

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

【问题讨论】:

    标签: ruby-on-rails elasticsearch tire


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2012-10-26
      • 2013-09-26
      • 2013-07-23
      • 1970-01-01
      • 2012-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-24
      相关资源
      最近更新 更多