先决条件:
Rails模型看起来像
class Customer < ActiveRecord::Base
include Elasticsearch::Model
include Elasticsearch::Model::Callbacks
end
问题:索引模型的正确方法是什么?
我的假设:
bundle exec rake environment elasticsearch:import:model CLASS =&#39;顾客&#39;
这够了吗?即使我更改了模型的映射或添加了新字段,这是否有效?
答案 0 :(得分:1)
添加elasticsearch做现有模型:
首先添加callbacks module
将负责索引任何新记录或更新已添加的记录include Elasticsearch::Model::Callbacks
其次,您需要通过在模型as_indexed_json
def as_indexed_json(options={})
as_json(
only: [:first_name, :last_name, :address],
include: [products: { only: :name }]
)
end
https://github.com/rtshome/ansible_pgsql当然,每次需要索引新字段时,都需要更新as_indexed_json
方法并运行rake任务。重建索引agaain。
第三,在安装elasticsearch之前为已经拥有的数据编制索引,您可以创建一个rake任务,以便在import
上调用model
方法重新编制索引或创建新索引对于那个模型。