1

Я использую камни elasticsearch-rails и модель elasticsearch в моем приложении Rails. Я использую this integration test в качестве шаблона для настройки моих сопоставлений и т. Д., Прежде чем импортировать существующие данные, которые имеют ту же основную связь между родительской и дочерней моделями.Как импортировать родительские/дочерние объекты в Elasticsearch

Я знаю, что интеграционный тест работает из-за обратных вызовов и что он устанавливает родительский идентификатор в этих обратных вызовах.

Я хотел бы импортировать существующие вопросы и ответы. Не похоже, что достаточно просто позвонить Questions.import и Answers.import. Я получаю ответы на вопросы, но у меня нет ответов в моем магазине Elasticsearch. Я хотел бы знать, как импортировать объекты Answers с соответствующим родительским сопоставлением. Может ли кто-нибудь дать мне какие-нибудь намеки?

ответ

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 камень имеет больше документов здесь: https://github.com/elastic/elasticsearch-rails/blob/ded20356920802c35d258756113acfd95b25ade6/elasticsearch-model/lib/elasticsearch/model/importing.rb

Смежные вопросы