マルチテナントアプリのタイヤジェムを介して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 に基づいてルーティングを追加したいと思います。これを達成する方法を教えてください。ルーティングを指定するには 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
検索クエリで何かを指定する必要がありますか? 上記のようにマッピングを指定すると (ルーティングを使用)、インデックス作成が行われません。ルーティングしなくても問題なく動作します。