如何在 Elasticsearch 中导入 parent/child 个对象

How to import parent/child objects in Elasticsearch

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

我知道集成测试之所以有效,是因为有回调,并且它在这些回调中设置了父 ID。

我想导入现有的问题和答案。似乎只调用 Questions.importAnswers.import 是不够的。我收到了问题,但在我的 Elasticsearch 商店中没有得到任何答案。我想知道如何使用适当的父映射导入 Answers 对象。谁能给我任何提示?

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

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

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