Nifi中的JsonQueryElasticSearch处理器

时间:2019-05-23 19:04:56

标签: apache-nifi

我正在Nifi(v1.9.2)中使用JsonQueryElasticSearch Processor。

查询字符串如下:

{
     "query": {
         "bool": {
            "must": [
                { "match":       { "event": "New" }},
                { "match":       { "uniqueId":  "${unique_id}"}},
                { "match":       { "header.schemaVersion": "1.3" }}
            ]
        }
    },
    "sort" : {
        "header.sourceSystemCreationTimestamp" : {"order" : "desc"}
    }
}

因为查询中$ {unique_id}流属性的值为空,所以没有给出任何结果。如果我对查询中的值进行硬编码,它将按预期工作。在处理器级别,我确实看到$ {unique_id}流属性的值。

非常感谢您的时间和帮助。

1 个答案:

答案 0 :(得分:0)

(我是编写此处理器​​的开发人员)

我尝试通过执行以下操作来重复该问题:

  1. 使用多个测试文档创建索引。
  2. 使用GenerateFlowFile-> JsonQueryElasticsearch
  3. 将此简单查询放入JsonQueryElasticsearch的查询参数中:
{
  "query": {
    "match": {
      "from": "${sender}"
    }
  },
  "aggs": {
    "senders": {
      "terms": {
        "field": "from",
        "size": 10
      }
    }
  }
}

所有预期结果均已返回。如果尝试通过流文件内容传递查询,则不能使用表达式语言(${unique_id})。这是预期的行为,因为表达式语言不在流文件的内容上评估,而仅在配置属性上评估。