PutElasticsearchRecord 프로세서

PutElasticsearchRecord 프로세서

PutElasticsearchRecord는 공식 Elastic REST 클라이언트 라이브러리를 사용하는 레코드 인지 Elasticsearch put 프로세서예요.

출처: 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로 보낼 문서로 변환돼요. 여러 문서를 Elasticsearch로 보내는 각 요청에 함께 배치할 수 있어요. 각 문서의 Bulk 연산은 Record Path 표현식으로 설정할 수 있어요. Tags elasticsearch, elasticsearch7, elasticsearch8, elasticsearch9, index, json, put, record 입력 요구 사항 필수(REQUIRED) 민감 동적 속성 지원 아니요(false)

속성 (Properties)

속성 설명
Batch Size 단일 배치로 보낼 레코드 수예요.
Client Service 쿼리를 실행하는 데 사용할 Elasticsearch 클라이언트 서비스예요.
Date Format Date 필드를 쓸 때 사용할 형식을 지정해요. 지정하지 않으면 기본 형식 'yyyy-MM-dd'가 사용돼요. 지정하면 값은 Java Simple Date Format과 일치해야 해요 (예: 두 자리 월, 두 자리 일, 네 자리 연도를 '/'로 구분한 MM/dd/yyyy, 예를 들어 01/25/2017).
Dynamic Templates Record Path 레코드 안에서 문서의 dynamic_templates를 담고 있는 필드를 가리키는 RecordPath예요. 필드는 Map 타입 호환(예: Map이나 Record)이거나 JSON Object로 파싱 가능한 String이어야 해요. Elasticsearch 7 이상이 필요해요.
Group Results by Bulk Error Type 'errors' 관계에 기록되는 오류 레코드를 오류 타입별로 그룹화하고, FlowFile 안 첫 레코드와 관련된 오류를 'elasticsearch.bulk.error'로 FlowFile에 추가해요. 'Treat Not Found as Success'가 'false'라면 'not_found' Elasticsearch 문서 응답과 연관된 레코드도 'errors' 관계로 보내져요.
ID Record Path Elasticsearch에 사용할 ID 필드를 가져오는 레코드 경로 표현식이에요. 비워두면 Elasticsearch가 ID를 자동 생성해요.
Index 사용할 인덱스 이름이에요.
Index Operation 인덱싱에 사용하는 연산 타입(create, delete, index, update, upsert)이에요.
Index Operation Record Path Elasticsearch에 사용할 Index Operation 필드를 가져오는 레코드 경로 표현식이에요. 비워두면 기본 Index Operation 속성으로 결정돼요.
Index Record Path Elasticsearch에 사용할 인덱스 필드를 가져오는 레코드 경로 표현식이에요. 비워두면 기본 index 속성으로 결정돼요.
Log Error Responses 활성화하면 오류를 NiFi 로그의 error 수준으로 기록해요. 그렇지 않으면 NiFi 전체에서 debug 로깅이 켜져 있을 때만 기록돼요. 이 옵션의 목적은 debug 로깅을 켜지 않고도 실패한 연산을 디버깅할 수 있게 하는 거예요.
Max JSON Field String Length JSON 문서나 속성을 파싱할 때 문자열 값의 최대 허용 길이예요.
Output Error Responses 활성화하면 Elasticsearch가 'error'로 표시한 응답 메시지를 'error_responses' 관계로 출력해요. 'successful' 또는 'errors' 관계로의 flowfile 출력에는 영향을 주지 않아요.
Record Reader flowfile에서 들어오는 레코드를 읽는 데 사용할 레코드 리더예요.
Result Record Writer Elasticsearch 응답에서 실패한 레코드를 검사해 이 record writer 서비스로 레코드 집합에 기록하고 'errors' 관계로 보내요. 성공한 레코드도 이 record writer 서비스로 레코드 집합에 기록하고 'successful' 관계로 보내요.
Retain ID (Record Path) ID Record Path로 사용되는 기존 필드를 유지할지 여부예요.
Retain Record Timestamp @timestamp Record Path로 사용되는 기존 필드를 유지할지 여부예요.
Script Record Path 레코드 안에서 문서 업데이트/업서트 스크립트를 담고 있는 필드를 가리키는 RecordPath예요. Update/Upsert 연산에만 적용돼요. 필드는 Map 타입 호환(예: Map이나 Record)이거나 JSON Object로 파싱 가능한 String이어야 해요.
Scripted Upsert Record Path 레코드 안에서 scripted_upsert boolean 플래그를 담고 있는 필드를 가리키는 RecordPath예요. Upsert 연산에 scripted_upsert 플래그를 추가할지 여부예요. 문서 존재 여부와 무관하게 Elasticsearch가 Script를 실행하도록 강제하며 기본값은 false예요. Upsert 문서가 비어 있다면 Client Service controller service의 Suppress Null and Empty Values를 Never Suppress로 설정해야 해요.
Time Format Time 필드를 쓸 때 사용할 형식을 지정해요. 지정하지 않으면 기본 형식 'HH:mm:ss'가 사용돼요. 지정하면 값은 Java Simple Date Format과 일치해야 해요 (예: 24시간 형식 두 자리 시, 두 자리 분, 두 자리 초를 ':'로 구분한 HH:mm:ss, 예를 들어 18:04:15).
Timestamp Format Timestamp 필드를 쓸 때 사용할 형식을 지정해요. 지정하지 않으면 기본 형식 'yyyy-MM-dd HH:mm:ss'가 사용돼요. 지정하면 값은 Java Simple Date Format과 일치해야 해요.
Timestamp Record Path 레코드 안에서 문서의 @timestamp를 담고 있는 필드를 가리키는 RecordPath예요. 비워두면 기본 @timestamp 속성으로 결정돼요.
Timestamp Value @timestamp 필드로 사용할 값이에요(Elasticsearch Data Streams에 필요해요).
Treat Not Found as Success true면 'not_found' Elasticsearch 문서와 연관된 레코드를 'successful' 관계로, 그렇지 않으면 'errors' 관계로 라우팅해요. Output Error Responses가 'true'라면 'not_found' 응답은 error_responses 관계로 보내져요.
Type 이 문서의 타입(Elasticsearch에서 인덱싱과 검색에 사용)이에요.
Type Record Path Elasticsearch에 사용할 type 필드를 가져오는 레코드 경로 표현식이에요. 비워두면 기본 type 속성으로 결정돼요.

관계 (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.put.error.count Elasticsearch _bulk API에서 오류를 만든 레코드 수예요.
elasticsearch.put.success.count Elasticsearch _bulk API가 성공적으로 처리한 레코드 수예요.
elasticsearch.bulk.error Elasticsearch 내에서 레코드를 처리하는 동안 오류가 있었을 때의 _bulk 응답이에요.

더 알아보기 (Learn more)