JsonQueryElasticsearch 프로세서

JsonQueryElasticsearch 프로세서

Openflow의 JsonQueryElasticsearch 프로세서는 Elasticsearch JSON DSL로 작성된 쿼리(집계 포함)를 실행할 수 있게 해주는 프로세서예요.

출처: Snowflake 문서

본문

기능 — 일반 공급 (Generally Available)

Openflow Snowflake 배포는 AWS, Azure, GCP 상용(Commercial) 리전의 모든 계정에서 사용할 수 있어요. Openflow BYOC 배포는 AWS 상용 리전의 모든 계정에서 사용할 수 있습니다.

Bundle

org.apache.nifi | nifi-elasticsearch-restapi-nar

설명

사용자가 Elasticsearch JSON DSL로 작성된 쿼리(집계 포함)를 실행할 수 있게 해주는 프로세서입니다. 쿼리를 자동으로 페이징하지는 않습니다. 이 프로세서에 인입 관계가 추가되면 쿼리에 FlowFile의 콘텐츠를 사용합니다. Elasticsearch의 전체 응답이 한 번에 메모리에 로드되어 결과 FlowFile로 변환되므로 쿼리 크기에 주의해야 합니다.

태그

elasticsearch, elasticsearch7, elasticsearch8, elasticsearch9, get, json, query, read

입력 요구사항

허용 (ALLOWED)

민감한 동적 속성 지원

false

속성

이름 설명
Aggregation Results Format 집계 출력의 형식입니다.
Aggregation Results Split 모든 집계를 포함하는 FlowFile을 출력할지, 각 집계에 대해 하나의 FlowFile을 출력할지 여부입니다.
Aggregations JSON 구문의 하나 이상의 쿼리 집계(또는 "aggs")입니다. 예: {"items": {"terms": {"field": "product", "size": 10}}}
Client Service 쿼리 실행에 사용할 Elasticsearch 클라이언트 서비스입니다.
Fields 조회할 인덱스 문서의 필드로, JSON 구문입니다. 예: ["user.id", "http.response.*", {"field": "@timestamp", "format": "epoch_millis"}]
Index 사용할 인덱스 이름입니다.
Max JSON Field String Length JSON 문서 또는 속성을 파싱할 때 문자열 값의 허용 최대 길이입니다.
Output No Hits 쿼리에 대한 hit이 없어도 "hits" FlowFile을 출력합니다. true이면 "aggregations"가 출력되어도 빈 "hits" FlowFile이 출력됩니다.
Query Lucene 구문이 아닌 JSON 구문의 쿼리입니다. 예: {"query":{"match":{"somefield":"somevalue"}}}. 이 매개변수가 설정되지 않으면 쿼리는 FlowFile 콘텐츠에서 읽힙니다. 쿼리(속성 및 FlowFile 콘텐츠)가 비어 있으면 기본 빈 JSON 객체가 사용되며, 이는 Elasticsearch에서 "match_all" 쿼리가 됩니다.
Query Attribute 설정되면 실행된 쿼리가 각 결과 FlowFile의 지정된 속성에 설정됩니다.
Query Clause Lucene 구문이 아닌 JSON 구문의 "query" 절입니다. 예: {"match":{"somefield":"somevalue"}}. 쿼리가 비어 있으면 기본 JSON 객체가 사용되며, 이는 Elasticsearch에서 "match_all" 쿼리가 됩니다.
Query Definition Style 프로세서가 사용할 JSON 쿼리를 정의하는 방식입니다.
Script Fields 쿼리 런타임 시 스크립트 평가로 생성할 필드로, JSON 구문입니다. 예: {"test1": {"script": {"lang": "painless", "source": "doc['price'].value * 2"}}, "test2": {"script": {"lang": "painless", "source": "doc['price'].value * params.factor", "params": {"factor": 2.0}}}}
Search Results Format Hits 출력의 형식입니다.
Search Results Split 모든 hit을 포함하는 FlowFile을 출력할지, 각 hit에 대해 하나의 FlowFile을 출력할지 여부입니다.
Size 쿼리에서 조회할 최대 문서 수입니다. 쿼리가 페이징되면 이 "size"는 전체 결과 집합의 "size"가 아니라 쿼리의 각 페이지에 적용됩니다.
Sort JSON 구문으로 하나 이상의 필드로 결과를 정렬합니다. 예: [{"price": {"order": "asc", "mode": "avg"}}, {"post_date": {"format": "strict_date_optional_time_nanos"}}]
Type 이 문서의 유형입니다(Elasticsearch가 인덱싱 및 검색에 사용).

관계

이름 설명
aggregations 집계(aggregations)가 이 관계로 라우팅됩니다.
failure 서버 가용성과 무관한 이유로 실패한 모든 FlowFile이 이 관계로 이동합니다.
hits 검색 hit이 이 관계로 라우팅됩니다.
original 오류를 발생시키지 않는 모든 원본 FlowFile이 이 관계로 이동합니다.

쓰기 속성

이름 설명
mime.type application/json
aggregation.name 결과가 출력 FlowFile에 있는 집계의 이름입니다.
aggregation.number 결과가 출력 FlowFile에 있는 집계의 번호입니다.
hit.count 출력 FlowFile에 있는 hit 수입니다.
elasticsearch.query.error 인덱스 쿼리 시 오류가 있으면 Elasticsearch가 제공하는 오류 메시지입니다.

참고 항목

  • org.apache.nifi.processors.elasticsearch.PaginatedJsonQueryElasticsearch

더 알아보기 (Learn more)