elasticsearch转换,无嵌套字段名的脚本化\u度量

llycmphe  于 2021-06-14  发布在  ElasticSearch
关注(0)|答案(1)|浏览(337)

我创建了如下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\u doc”开头。有没有办法防止字段名被这个最新的文档标签覆盖?
(否则我必须对输入索引和输出索引使用不同的索引模板)

fkvaft9z

fkvaft9z1#

为任何想知道的人找到了一个解决方法:
添加了摄取管道:

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');
                """
            }
        }
    ]
}

相关问题