Luwak Lucene 인덱서를 사용하여 사용자 지정 프로세서를 만들려고하고 있으므로 들어오는 플로우 파일에 대해 쿼리를 실행할 수 있습니다. 내가 알아 내려고하는 것은 Luwak 모니터 (아래 예제 코드) 안에있는 쿼리 인덱스를 업데이트하는 가장 좋은 방법입니다.NiFi - 프로세서에서 Luwak (Lucene) 인덱스를 업데이트하십시오.
편집 - 더 사용 상황에 맞는 업데이트로
, 나는 외부 사용자가// 업데이트를 추가 들어오는 flowfiles에 대해 실행되는 쿼리를 제거 할 수 있도록 의미. 고정 된 쿼리 집합으로 시작하지만 사용자 (들)가 수신 메시지에 대해 실행되는 쿼리를 변경할 수 있도록 허용하려고합니다. 여기에는 실행중인 쿼리를 변경하여 문제가 있습니다.
다른 옵션을 고려해야합니까? 10k 개가있는 경우 쿼리를 업데이트하는 데 약 20 초가 걸리는 것으로 보입니다. 이것은 거의 없지만 재로드/시작 시간은 제가 고려하려고하는 것입니다.
옵션은 나는 생각했다 :
- 모든 flowfile상의 UpdateAttribute 업데이트를 사용합니다. 특히 색인을 생성 할 쿼리가 많은 경우 이상적이지 않습니다.
- http, AWS SQS 등을 사용하여 우선 순위가 높은 흐름 파일을 보내 업데이트합니다 (다른 소스보다 높음). 끔찍한 것은 아니지만 여전히 옳은 것처럼 보입니다.
- 업데이트시 프로세서를 시작/중지하려면 NiFi API를 사용하십시오. 특히 업데이트가 자주 발생하는 경우 업데이트를 수행하는 매우 효율적인 방법으로 보이지 않습니다.
인스턴스화 모니터 : - :
//Add queries to the monitor
for (Map.Entry<String, String> entry : bucketList.entrySet()) {
MonitorQuery q = new MonitorQuery(entry.getKey(),entry.getValue());
monitor.update(q);
}
(IMHO) 문제가 명확하지 않습니다. 'UpdateAttribute','AWS SQS','NiFi API on start/stop' 옵션은 어떻게 연관되어 있습니까? – daggett
프로세서가 시작된 다음 수정 될 때 쿼리를로드해야합니까? 변경중인 것은 들어오는 플로우 파일이며, 이는 인덱싱 된 쿼리와 일치합니다. –
@daggett Bryan Bende : 더 많은 컨텍스트를 제공하는 EDIT를 추가했습니다. 우리는 런타임에 적용되는 쿼리를 사용자가 변경할 수 있도록하고 싶습니다. 여기에서 제가 해결해야 할 문제가 있습니다. 그들은 무한정 고정 된 채로 머 무르지 않을 것입니다. – scarpacci