У меня есть индекс с отношением родитель-потомок в упругом 2.4.
Этот индекс имеет 2 типа, один является родителем, а второй - дочерним.Оба имеют разные сопоставления, за исключением общего поля, которое field1
.
Отображения индекса выглядят следующим образом:
type parent
:
{
"properties": {
"field1": {
"type": "long"
},
"field2": {
"type": "long"
}
}
}
type child
:
{
"properties": {
"field3": {
"type": "long"
},
"field1": {
"type": "long"
}
}
}
Теперь я обновил сопоставление дочернего индекса и добавил еще одно поле, аналогичное родительскому индексу field2.
Теперь сопоставление дочернего элемента выглядит следующим образом:
{
"properties": {
"field3": {
"type": "long"
},
"field1": {
"type": "long"
}
"field2": {
"type": "long"
}
}
}
Теперь я хочу скопировать значение из родительского в дочернее на основе общего поля, field1
.документ в дочернем индексе должен обновляться с field2
, которые имеют общую field1
.
Я пробовал _reindex
api и update_by_query, но не нашел хорошего и быстрого решения, чтобы сделать то же самое.Как я попробовал _reindex
api с источником и назначением, как показано ниже, но есть ограничение, что он будет создавать новый документ вместо обновления документа с помощью общих полей, то есть field1
.
. Я попробовал следующеерешение.
index_name/_reindex
{
"source": {
"index": "index_name",
"type": "parent"
},
"dest": {
"index": "index_name",
"type": "child"
},
"script": {
"inline": "ctx._dest.field2 = ctx._source.field2"
}
}
Это дает мне ошибку, что мы не можем использовать один и тот же индекс как источник и пункт назначения.Как я могу исправить то же самое?или есть лучший способ сделать то же самое.