Nifi:PutSolrContentStream不评估EL
问题描述:
我使用值为“test”的UpdateAttribute处理器向我的流文件添加属性(solrCoreSuffix)。然后,在我的PutSolrContentStream处理器中,我将Solr Location属性设置为:“http://localhost:8983/solr/mycore- $ {solrCoreSuffix}”。我期望Solr处理器尝试访问“http://localhost:8983/solr/mycore-test”,但如日志中所述,它尝试访问“http://localhost:8983/solr/mycore-”。Nifi:PutSolrContentStream不评估EL
此字段具有“支持表达式语言:真”,我可以在检查队列中的flowfile时看到我的属性具有正确的值,我可以在PutFile等其他处理器上使用此属性,字段“Collection”具有相同的意外行为。
我没有看到我在这里做错了什么,我错过了什么?
答
Solr Location字段支持表达式语言,但不支持每个流文件。
这意味着当处理器启动时,它会创建一个SolrClient(从SolrJ开始),并根据环境变量,变量注册表等评估Solr Location的值,但此时没有流文件。有时间使用流文件属性。这使得某人可以基于像dev/qa/prod这样的环境轻松地对Solr Location进行外部化。
有人做过这样的原因是因为这将是创建该进来过单流文件到Solr一个新的连接昂贵。
在云计算模式下,收集不是Solr的位置的一部分,并且是动态的,因为CloudSolrClient允许你指定的每一个操作的集合: