我正在使用耐嚼的 gem 将ES绑定(bind)到我的rails应用程序。我是耐嚼的新手,所以当我尝试索引模型的字段时遇到了一个问题。该字段是数据库中的一个文本字段,我在模型中将其序列化为哈希。哈希是动态的,形式中可能包含0到n个元素。字段名称是项目任何帮助将不胜感激。
{"0"=>{"property"=>"value","property"=>"value"},"1"=>{"property"=>"value","property"=>"value"}.......}
当我执行define_type时,如何在索引类中为此类字段建立索引?
这是我的索引器
require 'typhoeus/adapters/faraday'
class ModelNameIndex < Chewy::Index
define_type ModelName do
field :user_id, type: 'integer'
field :enduser_id, type: 'integer'
field :items, type: 'object'
field :created, type: 'date', include_in_all: false,
value: ->{ created_at }
end
end
我的模特
class ModelName < ActiveRecord::Base
update_index('IndexName#name') { self }
belongs_to :user
serialize :items, Hash
end
最佳答案
上面的代码工作正常
require 'typhoeus/adapters/faraday'
class ModelNameIndex < Chewy::Index
define_type ModelName do
field :user_id, type: 'integer'
field :enduser_id, type: 'integer'
field :items, type: 'object'
field :created, type: 'date', include_in_all: false,
value: ->{ created_at }
end
end
如果有人遇到解析错误,请确保ElasticSearch没有您先前定义的任何键,否则它将引发错误。