나는 멀티 테넌트 (multi-tenant) 앱을 위해 tiregem을 통해 elasticsearch를 사용하려고합니다. 앱에 많은 사용자가있는 계정이 많은 계정이 있습니다.타이어를 통해 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을 기반으로 라우팅을 추가하고 싶습니다. 이것이 어떻게 달성 될 수 있도록 도와주십시오. 라우팅을 지정하는 두 가지 방법이 있음을 알았습니다. 별명
내가 첫 번째 옵션에 관심을 사용하여 라우팅 필드
- . _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('[email protected]') }, filter :term, :account_id => 2 end end end
우리가 검색 쿼리에서 아무것도 지정해야합니까? 위에서 지정한대로 매핑을 지정하면 색인 생성이 발생하지 않습니다 (라우팅 사용). 라우팅 없이는 정상적으로 작동합니다.