Nifi:PutSolrContentStream 不评估 EL
Nifi : PutSolrContentStream does not evaluate EL
我使用值为 "test" 的 UpdateAttribute 处理器向我的流文件添加了一个属性 (solrCoreSuffix)。然后,在我的 PutSolrContentStream 处理器中,我将 Solr Location 属性 设置为:“http://localhost:8983/solr/mycore-${solrCoreSuffix}". I expect the Solr processor to try to get to "http://localhost:8983/solr/mycore-test" but, as stated in the logs, it tries to access "http://localhost:8983/solr/mycore-”。
这个字段有 "support expression language : true",我可以在检查队列中的流文件时看到我的属性具有正确的值,我可以在其他处理器上使用这个属性,例如 PutFile,字段 "Collection" 具有相同的值意外行为。
我看不出我做错了什么,我是不是漏掉了什么?
Solr Location 字段支持表达式语言,但不支持每个流文件。
这意味着当处理器启动时,它正在创建一个 SolrClient(来自 SolrJ)并根据环境变量、变量注册表等评估 Solr Location 的值,但此时没有流文件及时使用流文件属性。这允许某人根据 dev/qa/prod.
等环境轻松地将 Solr Location 外部化
这样做的原因是,为传入的单个流文件创建到 Solr 的新连接的成本很高。
在云模式下,集合不是 Solr Location 的一部分,并且是动态的,因为 CloudSolrClient 允许您在每次操作时指定集合:
我使用值为 "test" 的 UpdateAttribute 处理器向我的流文件添加了一个属性 (solrCoreSuffix)。然后,在我的 PutSolrContentStream 处理器中,我将 Solr Location 属性 设置为:“http://localhost:8983/solr/mycore-${solrCoreSuffix}". I expect the Solr processor to try to get to "http://localhost:8983/solr/mycore-test" but, as stated in the logs, it tries to access "http://localhost:8983/solr/mycore-”。
这个字段有 "support expression language : true",我可以在检查队列中的流文件时看到我的属性具有正确的值,我可以在其他处理器上使用这个属性,例如 PutFile,字段 "Collection" 具有相同的值意外行为。
我看不出我做错了什么,我是不是漏掉了什么?
Solr Location 字段支持表达式语言,但不支持每个流文件。
这意味着当处理器启动时,它正在创建一个 SolrClient(来自 SolrJ)并根据环境变量、变量注册表等评估 Solr Location 的值,但此时没有流文件及时使用流文件属性。这允许某人根据 dev/qa/prod.
等环境轻松地将 Solr Location 外部化这样做的原因是,为传入的单个流文件创建到 Solr 的新连接的成本很高。
在云模式下,集合不是 Solr Location 的一部分,并且是动态的,因为 CloudSolrClient 允许您在每次操作时指定集合: