我正在为我们的 rails-app/data 探索各种搜索引擎选项。我能够使 sunspot/solr 工作,目前正在探索 ElasticSearch 作为替代方案,但无法在 ES 下获得相同的东西(范围/过滤)。
我想按照“ https://github.com/sunspot/sunspot ”中的“范围”部分中的描述过滤/范围对象。
我有一个活动记录类“产品”。
class Product < ActiveRecord::Base
...
include Tire::Model::Search
include Tire::Model::Callbacks
tire.mapping do
indexes :name, :type => :string
indexes :categories do
indexes :id, :type => :integer
end
end
end
一旦我将产品导入ES,
以下查询有效并给出结果
Product.tire.search { query { string '*', default_operator: "AND", default_field: "name" } }.results
如何在给定类别 id 的情况下获取特定类别的产品?
Product.tire.search { query { string '*', default_operator: "AND", default_field: "name" }; filter(:term, 'categories.id' => 38) }.results
我基本上是在寻找以下太阳黑子调用的轮胎等效物:
Product.search do
with(:category_ids, 38)
end
在 Product 类中具有以下内容
searchable :auto_index => true, :auto_remove => true do
text :name
integer :category_ids, :multiple => true do
self.categories.map &:id
end
end