我使用UpdateAttribute处理器为我的流文件添加一个属性(solrCoreSuffix),值为" test"。然后,在我的PutSolrContentStream处理器中,我将Solr Location属性设置为:" http://localhost:8983/solr/mycore- $ {solrCoreSuffix}"。我希望Solr处理器能够尝试进入" http://localhost:8983/solr/mycore-test"但是,如日志中所述,它会尝试访问" http://localhost:8983/solr/mycore-"。
这个字段有"支持表达式语言:true",我在查看队列中的flowfile时可以看到我的属性值正确,我可以在PutFile等其他处理器上使用这个属性,例如,字段&# 34;收集和#34;有同样的意外行为。
我不知道我在这里做错了什么,我错过了什么吗?
答案 0 :(得分:2)
Solr Location字段支持表达式语言,但不支持按流文件。
这意味着当处理器启动时,它正在创建SolrClient(来自SolrJ)并根据环境变量,变量注册表等评估Solr Location的值,但此时没有流文件使用流文件属性。这允许某人根据dev / qa / prod等环境轻松地将Solr位置外部化。
以这种方式完成的原因是因为创建一个新的Solr连接对于任何单个流文件来说都是昂贵的。
在云模式下,该集合不是Solr Location的一部分,并且是动态的,因为CloudSolrClient允许您为每个操作指定集合: