2012-12-17 4 views
0

나는 현재 Mongoid/MongoDB를 Tire/ElasticSearch가있는 데이터베이스에 사용하고 있습니다. _id의 배열을 기반으로 검색 결과를 필터링하고 싶습니다. 나는 :_id 속성을 교환하고 다른 인덱스 속성을 사용하려고 할 때필터 ElasticSearch 결과 Mongo에 의해 _id

search = Tire::Search::Search.new() 
search.filter :terms, :_id => [array_of_ids] 

가 잘 작동 : 여기에 내가 시도하고있는 무슨와 비슷한 의사 코드이다. 그러나 :_id을 사용하면 결과가 반환되지 않습니다.

답변

0

필터링 할 수없는 사용자가 :_id 또는 :id으로 나타났습니다. 이것이 타이어 특유의 것이 든 ElasticSearch 특유의 것이 든 나는 확신 할 수 없다.

내 타이어 사용자 지정 매핑에서 나는 별칭의 일종으로 중복 필드를 추가했습니다. 더 사이비 - 코드 :

tire.mapping do 
    indexes :id,   :index => :not_analyzed 
    indexes :content_id, :analyzer => :keyword, 
         :as  => "_id" 
    ... 
end 

중요한 부분은 indexes :content_id, :as => "_id" 서비스를 제공합니다. 그 시점부터 :content_id을 사용하여 필터링했습니다.

+0

http://www.elasticsearch.org/guide/reference/query-dsl/ids-filter.html 필터를 사용해보십시오. – karmi