2017-09-13 14 views
0

"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을 평가하지 않습니다

이 필드에는 "지원 표현식 언어 : true"가 있습니다. 큐에서 flowfile을 검사 할 때 올바른 값으로 속성을 볼 수 있습니다. 예를 들어 PutFile과 같은 다른 프로세서에서이 속성을 사용할 수 있습니다. "Collection"필드는 예기치 않은 동일한 값을가집니다. 행동.

내가 여기서 잘못하고있는 것을 보지 못했습니다. 뭔가 놓쳤습니까?

답변

2

Solr Location 필드는 표현 언어를 지원하지만 플로우 별 파일은 지원하지 않습니다.

이것은 프로세서가 시작될 때 SolrClient (SolrJ에서)를 생성하고 환경 변수, 변수 레지스트리 등에 대해 Solr Location의 값을 평가하지만이 시점에는 흐름 파일이 없음을 의미합니다 흐름 파일 속성을 사용할 시간. 이를 통해 누군가가 dev/qa/prod와 같은 환경을 기반으로 Solr 위치를 쉽게 외부화 할 수 있습니다. 이 들어온다 지금까지 하나의 흐름 파일 SOLR에 새로운 연결을 만들려면 비용이 때문에

가 이런 식으로 수행 된 이유입니다.

클라우드 모드에서

컬렉션은 SOLR 위치의 일부가 아닙니다

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

다음 CloudSolrClient 당신이 각 작업에 컬렉션을 지정할 수 있기 때문에, 동적 인