Как _reindex эластичного поиска данных к новому отображению (от плоских полей до объектов)? - PullRequest
1 голос
/ 26 июня 2019

У меня старый индекс (индекс эластичного поиска) содержит более 20 тыс. Объектов, у этого индекса есть поля

{
    "title": "Test title",
    "title_ar": "عنوان تجريبي",
    "body": "<p>......</p>"
}

Я хочу _reindex их, чтобы преобразовать все данные в новое сопоставление, как это

{
    "title_1": {
        "en": "Test title",
        "ar": "عنوان تجريبي"
    },
    "body": "<p>......</p>"
}

Какой процессор конвейера упругого поиска является лучшим, чтобы сделать это преобразование доступным в _reindex API?

1 Ответ

2 голосов
/ 26 июня 2019

Я предлагаю просто использовать reindex API для этого:

POST _reindex
{
  "source": {
    "index": "old_index"
  },
  "dest": {
    "index": "new_index"
  },
  "script": {
    "source": "ctx._source.title = [ 'en' : ctx._source.title, 'ar': ctx._source.title_ar]",
    "lang": "painless"
  }
}

Если в вашем old_index индексе у вас есть это:

{
    "title": "Test title",
    "title_ar": "عنوان تجريبي",
    "body": "<p>......</p>"
}

В вашем новом индексе у вас будет это:

{
    "title": {
        "en": "Test title",
        "ar": "عنوان تجريبي"
    },
    "body": "<p>......</p>"
}
...