通过Mongo _id过滤ElasticSearch结果

时间:2012-12-17 20:38:59

标签: ruby-on-rails mongoid elasticsearch tire

我目前正在使用Tyre / ElasticSearch将Mongoid / MongoDB用于我的数据库。我想根据_id的数组过滤我的结果。这是一些类似于我正在尝试的伪代码:

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

当我换出:_id属性并尝试使用另一个索引属性时,它可以正常工作。但是,对于:_id,它不会返回任何结果。

1 个答案:

答案 0 :(得分:0)

原则上,您无法按:_id:id进行过滤。无论这是特定于Tire还是特定于ElasticSearch,我都不确定。

在我的轮胎自定义映射中,我已经继续并添加了一个重复字段作为别名。更多伪代码:

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

重要的部分是indexes :content_id, :as => "_id"。从那时起,我使用:content_id进行过滤。

相关问题