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