如何在Elasticsearch中导入父/子对象

时间:2015-10-29 04:42:16

标签: ruby-on-rails ruby-on-rails-3 elasticsearch elasticsearch-rails elasticsearch-model

我在我的Rails应用程序中使用gems elasticsearch-rails和elasticsearch-model。我在导入现有数据之前使用this integration test作为模板来设置我的映射等,这些数据在父模型和子模型之间具有相同的基本关联。

我知道集成测试因为回调而起作用,并且它在那些回调中设置了父ID。

我想导入现有的问题和解答。仅仅拨打Questions.importAnswers.import似乎不够。我收到了问题,但我的Elasticsearch商店没有得到任何答案。我想知道如何使用适当的父映射导入Answers对象。任何人都可以给我任何提示吗?

1 个答案:

答案 0 :(得分:1)

我会回答我自己的问题,以防其他人想知道同样的事情。

您可以在导入时传递一些内容来转换数据:

transform = lambda do |a|
  {index: {_id: a.id, _parent: a.author_id, data: a.__elasticsearch__.as_indexed_json}}
end

Article.import transform: transform

elasticsearch-model gem在此处有更多文档:https://github.com/elastic/elasticsearch-rails/blob/ded20356920802c35d258756113acfd95b25ade6/elasticsearch-model/lib/elasticsearch/model/importing.rb