Преобразование ElasticSearch, scripted_metric без вложенных имен полей

#elasticsearch #scripting #transformation

#elasticsearch #сценарии #преобразование

Вопрос:

Я создал преобразование ElasticSearch следующим образом:

 "source": {
    "index": "input_index"
  },
  "dest" : { 
    "index" : "output_index"
  },
  "pivot": {
    "group_by": { 
      "device_id": { "terms": { "field": "device_id.keyword" }}
    },
    "aggregations": {
      "@timestamp": {
        "max": {
          "field": "@timestamp"
        }
      },
      "latest_doc": {
        "scripted_metric": {
           "init_script": ...,
           "map_script": ... }",
           "combine_script": "return state",
           "reduce_script": .... return last_doc   (last_doc contains document from input_index) 
        }
      }
    }
  }
  

Это отлично работает, но все поля в индексе назначения начинаются с «latest_doc»..
Есть ли способ предотвратить предшествование имен полей этой метке latest_doc ?

(В противном случае мне придется использовать разные шаблоны индексов для входных индексов и выходных индексов)

Ответ №1:

найдено обходное решение для всех, кто хочет знать:

добавлен входной конвейер:

 PUT _ingest/pipeline/remove_trailing_
{
    "processors": [{
            "script": {
                "source": """
                for(item in ctx['latest_doc'].entrySet()) {
                   def f1 = 'latest_doc.'   item.getKey();
                   def f2 = item.getKey();
                   ctx[f2] = item.getValue();
                }
                ctx.remove('latest_doc');
                """
            }
        }
    ]
}