【问题标题】:Nifi : PutSolrContentStream does not evaluate ELNifi:PutSolrContentStream 不评估 EL
【发布时间】:2017-09-13 13:24:37
【问题描述】:

我使用值为“test”的 UpdateAttribute 处理器向我的流文件添加一个属性 (solrCoreSuffix)。然后,在我的 PutSolrContentStream 处理器中,我将 Solr Location 属性设置为:“http://localhost:8983/solr/mycore-${solrCoreSuffix}”。我希望 Solr 处理器尝试访问“http://localhost:8983/solr/mycore-test”,但如日志中所述,它会尝试访问“http://localhost:8983/solr/mycore-”。

此字段具有“支持表达式语言:true”,当检查队列中的流文件时,我可以看到我的属性具有正确的值,我可以在 PutFile 等其他处理器上使用此属性,例如,字段“Collection”具有相同的意外行为.

我看不出我在这里做错了什么,我错过了什么吗?

【问题讨论】:

    标签: solr el apache-nifi


    【解决方案1】:

    Solr Location 字段支持表达式语言,但不支持每个流文件。

    这意味着当处理器启动时,它正在创建一个 SolrClient(来自 SolrJ)并根据环境变量、变量注册表等评估 Solr Location 的值,但此时没有流文件使用流文件属性。这允许人们根据 dev/qa/prod 等环境轻松地将 Solr 位置外部化。

    这样做的原因是因为为每个传入的单个流文件创建与 Solr 的新连接会很昂贵。

    在云模式下,集合不是 Solr 位置的一部分,并且是动态的,因为 CloudSolrClient 允许您在每个操作上指定集合:

    https://github.com/apache/nifi/blob/master/nifi-nar-bundles/nifi-solr-bundle/nifi-solr-processors/src/main/java/org/apache/nifi/processors/solr/PutSolrContentStream.java#L178

    https://github.com/apache/nifi/blob/master/nifi-nar-bundles/nifi-solr-bundle/nifi-solr-processors/src/main/java/org/apache/nifi/processors/solr/PutSolrContentStream.java#L203-L205

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-18
      • 1970-01-01
      • 2010-10-04
      • 1970-01-01
      • 1970-01-01
      • 2011-04-03
      • 2014-06-21
      • 1970-01-01
      相关资源
      最近更新 更多