0

現在、Tire/ElasticSearch を使用してデータベースに Mongoid/MongoDB を使用しています。の配列に基づいて結果をフィルタリングしたいと考えています_id。ここに私が試みているものに似た疑似コードがあります:

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

属性を交換して:_id別のインデックス付き属性を使用しようとすると、正常に機能します。ただし、 では:_id結果が返されません。

4

1 に答える 1

0

:_idまたはでフィルタリングすることは許可されていません:id。これがタイヤ固有のものなのか、エラスティックサーチ固有のものなのかはわかりません。

タイヤのカスタム マッピングでは、複製フィールドを一種のエイリアスとして追加しました。より多くの疑似コード:

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

重要な部分はindexes :content_id, :as => "_id". その時点から、 を使用してフィルタリングし:content_idました。

于 2012-12-17T22:25:09.580 に答える