PutElasticsearchJson 프로세서
PutElasticsearchJson 프로세서
PutElasticsearchJson은 공식 Elastic REST 클라이언트 라이브러리를 사용해 FlowFile을 Elasticsearch에 저장하는 프로세서예요.
출처: Snowflake 문서
본문
이 프로세서는 일반 사용 가능(Generally Available) 상태예요. OpenFlow Snowflake 배포는 AWS, Azure, GCP 상용(Commercial) 리전의 모든 계정에서 사용할 수 있고, OpenFlow BYOC 배포는 AWS 상용 리전의 모든 계정에서 사용할 수 있어요.
Bundle org.apache.nifi | nifi-elasticsearch-restapi-nar
설명
공식 Elastic REST 클라이언트 라이브러리를 사용하는 Elasticsearch put 프로세서예요. 각 FlowFile은 Elasticsearch _bulk API로 보낼 문서로 취급돼요. 여러 FlowFile을 Elasticsearch로 보내는 각 요청에 함께 배치할 수 있어요.
Tags elasticsearch, elasticsearch7, elasticsearch8, elasticsearch9, index, json, put
입력 요구 사항 필수(REQUIRED)
민감 동적 속성 지원 아니요(false)
속성 (Properties)
| 속성 | 설명 |
|---|---|
| Batch Size | 단일 배치로 보낼 FlowFile 수의 선호값이에요. |
| Character Set | 문서 데이터의 문자 집합을 지정해요. |
| Client Service | 쿼리를 실행하는 데 사용할 Elasticsearch 클라이언트 서비스예요. |
| Dynamic Templates | 문서의 dynamic_templates예요. JSON Object로 파싱 가능해야 해요. Elasticsearch 7 이상이 필요해요. |
| Identifier Attribute | 문서의 식별자를 담고 있는 FlowFile 속성 이름이에요. Index Operation이 'index'이면 이 속성을 비워두거나 빈 값으로 평가해도 되고, 그 경우 문서 식별자는 Elasticsearch가 자동 생성해요. 그 외 모든 Index Operation에서는 속성이 비어 있지 않은 값으로 평가되어야 해요. |
| Index | 사용할 인덱스 이름이에요. |
| Index Operation | 인덱싱에 사용하는 연산 타입(create, delete, index, update, upsert)이에요. |
| Log Error Responses | 활성화하면 오류를 NiFi 로그의 error 수준으로 기록해요. 그렇지 않으면 NiFi 전체에서 debug 로깅이 켜져 있을 때만 기록돼요. 이 옵션의 목적은 debug 로깅을 켜지 않고도 실패한 연산을 디버깅할 수 있게 하는 거예요. |
| Max JSON Field String Length | JSON 문서나 속성을 파싱할 때 문자열 값의 최대 허용 길이예요. |
| Output Error Responses | 활성화하면 Elasticsearch가 'error'로 표시한 응답 메시지를 'error_responses' 관계로 출력해요. 'successful' 또는 'errors' 관계로의 flowfile 출력에는 영향을 주지 않아요. |
| Script | 문서 업데이트/업서트용 스크립트예요. Update/Upsert 연산에만 적용돼요. JSON Object로 파싱 가능해야 해요. 비워두면 문서 업데이트/업서트에 FlowFile 내용이 사용돼요. |
| Scripted Upsert | Upsert 연산에 scripted_upsert 플래그를 추가할지 여부예요. true면 문서 존재 여부와 무관하게 Elasticsearch가 Script를 실행하도록 강제하며 기본값은 false예요. 제공되는 Upsert 문서(FlowFile 내용)가 비어 있다면 Client Service controller service의 Suppress Null and Empty Values를 Never Suppress로 설정하지 않으면 요청에 'upsert' 문서가 포함되지 않아 새 문서가 생성되지 않고 'not_found' 오류가 나요. |
| Treat Not Found as Success | true면 'not_found' Elasticsearch 문서와 연관된 레코드를 'successful' 관계로, 그렇지 않으면 'errors' 관계로 라우팅해요. Output Error Responses가 'true'라면 'not_found' 응답은 error_responses 관계로 보내져요. |
| Type | 이 문서의 타입(Elasticsearch에서 인덱싱과 검색에 사용)이에요. |
관계 (Relationships)
| 이름 | 설명 |
|---|---|
| errors | Elasticsearch 내에서 'error'를 결과로 낸 문서에 해당하는 레코드/FlowFile이 여기로 라우팅돼요. |
| failure | 서버 가용성과 무관한 이유로 실패한 모든 flowfile이 이 관계로 가요. |
| original | 요청 실패 없이 Elasticsearch로 보내진 모든 flowfile이 이 관계로 가요. |
| retry | 서버/클러스터 가용성 때문에 실패한 모든 flowfile이 이 관계로 가요. |
| successful | Elasticsearch 내에서 'error'를 결과로 내지 않은 문서에 해당하는 레코드/FlowFile이 여기로 라우팅돼요. |
기록되는 속성 (Writes attributes)
| 속성 | 설명 |
|---|---|
| elasticsearch.put.error | FlowFile 파싱, 파싱된 문서를 Elasticsearch로 보내기, Elasticsearch 응답 파싱에 문제가 있을 때의 오류 메시지예요. |
| elasticsearch.bulk.error | Elasticsearch 내에서 문서를 처리하는 동안 오류가 있었을 때의 _bulk 응답이에요. |