Elasticsearch通过轮胎对我来说很好。我想要一个关于我在代码中遇到的问题的建议。
mapping do
indexes :id, :index => :not_analyzed
indexes :locality
end
这是我的mapping.locality的一部分,对应于模型中定义为
的方法def locality
self.locality.name
end
该模型也
belongs_to :locality
因此,您可以观察到被调用的方法将陷入无限循环。我有一个限制,我不能更改映射中的名称位置,因为我们要避免的前端相应的更改。 另一种方法是在Locality模型中定义一个方法,该方法给出了
def locality_name
self.name
end
我尝试在to_indexed_json中包含locality_name方法并尝试以这种方式进行映射但失败了。
mapping do
indexes :id, :index => :not_analyzed
indexes :locality do
indexes :locality_name
end
end
我希望在不更改模型Locality的情况下将地点名称索引为结果中的“locality”。
答案 0 :(得分:0)
您需要在模型中提供to_indexed_json
的实现,以便为索引中的locality字段提供不同的值。 this question中有关于to_indexed_json
的更多详细信息,但这样的内容应该有效:
self.include_root_in_json = false
def to_indexed_json
# Get the default json for the instance
hash = as_json(:root => false)
# Add a locality field mapped to the name of the locality
hash.update(:locality => self.locality.name).to_json
end