如何将分割的FlowFiles与Elasticsearch中的数据合并?

时间:2017-09-08 11:45:53

标签: elasticsearch apache-nifi elasticsearch-5

我遇到了合并分割的FlowFiles的问题。让我一步一步解释这个问题。

这是我的处理器序列。

enter image description here

在Elasticsearch中我有这个索引和映射:

PUT /myindex
{
  "mappings": {
    "myentries": {
      "_all": {
        "enabled": false
      }, 
      "properties": {
          "yid": {"type": "keyword"},
          "days": { 
              "properties": {
                        "Type1":  { "type": "date" },
                        "Type2":  { "type": "date" }
              }
            },
            "directions": { 
              "properties": {
                      "name": {"type": "keyword"},
                      "recorder":  { "type": "keyword" },
                      "direction":  { "type": "integer" }
              }
            }
        }
    }
  }
}

我使用directions从Elasticsearch获取QueryElasticsearchHTTP,然后将directions拆分为使用SplitJson以获得10个FlowFiles。每个FlowFile都有以下内容:{"name": "X","recorder": "X", "direction": "X"}

在此之后,对于10个FlowFiles中的每一个,我使用filenameUpdateAttribute生成属性${UUID()}。然后,我使用来自ElasticSearch的一些常量数据来丰富每个FlowFile。实际上,我合并到每个FlowFile的数据是相同的。因此,理想情况下,我只想运行Get constants from Elastic一次而不是运行10次。

但无论如何,关键问题是不同的。 来自Gets constants from Elastic的FlowFiles具有filename的其他值,并且无法与来自Set the attribute "filename"的文件合并。我也尝试使用{{1}但是有同样的问题。知道如何解决这个问题吗?

更新

EvaluateJsonPath中使用的Groovy代码。我不确定它是否有效,当输入队列中有10个和10个应该合并的文件批次时:

Merge inputs...

0 个答案:

没有答案