수집 파이프라인
원본 보기검색 활용 사례를 위한 수집 파이프라인
수집 파이프라인은 Elasticsearch API 또는 Kibana UI를 통해 관리할 수 있습니다.
Connectors 아래의 Pipelines 탭에서는 커넥터의 대상 인덱스가 사용하는 수집 파이프라인을 관리할 수 있습니다. 여기에서 관리형 파이프라인을 확인하고 설정을 조정할 수 있습니다. 일반적인 파이프라인 작성은 내비게이션 메뉴 또는 전역 검색 필드를 사용해 Ingest Pipelines 관리 페이지로 이동하세요.
이 UI 도구로 수집 파이프라인을 다루려면 Pipelines 탭을 여세요.
Kibana UI에서 이 탭을 찾는 방법:
- 전역 검색 필드로 Connectors를 검색한 뒤 결과에서 Build / Connectors를 선택합니다.
- 작업할 커넥터를 선택합니다. 예를 들어
azure-blob-storage입니다. - 커넥터 페이지에서 Pipelines 탭을 엽니다.
- 여기에서 안내에 따라 사용자 지정 파이프라인을 만들고 ML 추론 파이프라인을 설정할 수 있습니다.
다음 스크린샷에서 해당 탭이 강조되어 있습니다:
이러한 도구는 문서에 대한 사용자 지정 및 후처리 계층을 제공하므로 특히 유용합니다. 예를 들면 다음과 같습니다:
- 바이너리 데이터 타입에서 일관되게 텍스트를 추출
- 일관된 서식 보장
- 일관된 정제 단계 제공(전화번호나 주민등록번호 같은 PII 제거)
운영 환경에 적합한 파이프라인을 처음부터 구축하고 관리하는 데는 많은 작업이 필요할 수 있습니다. 오류 처리, 조건부 실행, 순서 지정, 버전 관리, 모듈화 같은 요소를 모두 고려해야 합니다.
이를 위해 검색 활용 사례용 인덱스(커넥터 및 API 인덱스 포함)를 만들면 각 인덱스에는 콘텐츠를 검색에 최적화하는 여러 프로세서가 포함된 파이프라인이 이미 설정되어 있습니다.
이 파이프라인의 이름은 search-default-ingestion입니다. "관리형" 파이프라인이므로(즉, 임의로 수정하면 안 됩니다) Kibana UI나 Elasticsearch API를 통해 세부 정보를 확인할 수 있습니다. 아래에서 그 구성 내용에 대해 더 읽어볼 수도 있습니다.
이러한 프로세서 중 일부는 실행 여부를 제어할 수 있습니다. 모든 기능이 기본적으로 활성화되어 있지만 옵트아웃할 수 있습니다. 커넥터의 경우 인덱스별로 옵트아웃(또는 다시 옵트인)할 수 있으며 선택 사항이 저장됩니다. API 인덱스의 경우 문서에 특정 필드를 포함시켜 옵트아웃(또는 다시 옵트인)할 수 있습니다. 자세한 내용은 아래를 참고하세요.
배포 수준에서는 모든 새 인덱스에 적용되는 기본 설정을 변경할 수 있습니다. 이는 기존 인덱스에는 영향을 주지 않습니다.
또한 각 인덱스는 처리 방식을 사용자 지정할 수 있는 인덱스 전용 수집 파이프라인을 손쉽게 만드는 기능을 제공합니다. 추가적인 유연성이 필요하다면 파이프라인 설정으로 이동해 "copy and customize"를 선택하여 사용자 지정 파이프라인을 만들 수 있습니다. 이렇게 하면 인덱스가 사용하던 search-default-ingestion이 새로 생성된 3개의 파이프라인으로 대체됩니다:
<index-name><index-name>@custom<index-name>@ml-inference
search-default-ingestion과 마찬가지로 이 중 첫 번째는 "관리형"이지만 나머지 두 개는 필요에 맞게 수정할 수 있고 또 수정해야 합니다. 플랫폼 도구(Kibana UI, Elasticsearch API)로 이러한 파이프라인을 확인할 수 있으며, 아래에서 그 내용에 대해 더 읽어볼 수도 있습니다.
파이프라인 자체와는 별개로, 파이프라인의 개별 기능을 제어하는 몇 가지 구성 옵션이 있습니다.
Extract Binary Content - 바이너리 문서를 처리하여 텍스트 콘텐츠를 추출할지 여부를 제어합니다.
Reduce Whitespace - 연속된 공백과 앞뒤 공백을 제거할지 여부를 제어합니다. 일부 검색 환경에서 더 많은 콘텐츠를 표시하는 데 도움이 됩니다.
Run ML Inference - 인덱스 전용 파이프라인에서만 사용할 수 있습니다. 선택적인
<index-name>@ml-inference파이프라인을 실행할지 여부를 제어합니다. 기본적으로 활성화되어 있습니다.커넥터의 경우 인덱스별로 옵트인 또는 옵트아웃할 수 있습니다. 이 설정은 Elasticsearch의
.elastic-connectors인덱스에서 해당 인덱스에 대응하는 문서에 저장됩니다. 그곳에서 직접 설정을 변경할 수 있습니다. 또는 다음과 같이 할 수도 있습니다:- 전역 검색 필드로 Connectors를 검색한 뒤 결과에서 Build / Connectors를 선택합니다.
- 커넥터를 선택한 다음 Pipelines > Settings로 이동해 변경합니다.
배포 전체의 기본값도 변경할 수 있습니다. 이 설정은
.elastic-connectors의 Elasticsearch 매핑 내_meta섹션에 저장됩니다. 그곳에서 직접 설정을 변경할 수 있습니다. 또는 다음과 같이 할 수도 있습니다:- 전역 검색 필드로 Connectors를 검색한 뒤 결과에서 Build / Connectors를 선택합니다.
- 커넥터를 선택한 다음 Configuration으로 이동해 변경합니다.
배포 전체의 기본값을 변경해도 기존 인덱스에는 영향을 주지 않으며, 새로 생성되는 인덱스의 기본값에만 영향을 줍니다. 이러한 기본값은 여전히 인덱스별 설정으로 재정의할 수 있습니다.
"Use the API"를 사용하는 인덱스에서는 이러한 설정이 저장되지 않습니다. 대신 설정을 변경하면 표시되는 예제 cURL 요청이 실시간으로 바뀝니다. cURL 요청의 예제 문서에는 밑줄로 시작하는 세 개의 필드가 포함되어 있습니다:
{
...
"_extract_binary_content": true,
"_reduce_whitespace": true,
"_run_ml_inference": true
}
이러한 특수 필드 중 하나를 생략하는 것은 값을 false로 지정하는 것과 같습니다.
인덱싱 요청에 파이프라인도 지정해야 합니다. 이는 예제 cURL 요청에도 나와 있습니다.
파이프라인을 지정하지 않으면 밑줄로 시작하는 필드가 실제로 인덱싱되며 처리 동작에는 아무런 영향을 주지 않습니다.
Elasticsearch Ingest Pipelines API로 이 파이프라인에 접근하거나, 내비게이션 메뉴 또는 전역 검색 필드를 사용해 Ingest Pipelines 관리 페이지로 이동하세요.
이 파이프라인은 "관리형" 파이프라인입니다. 즉, 편집을 염두에 두고 만들어진 것이 아닙니다. 이 파이프라인을 수동으로 편집하거나 업데이트하면 의도치 않은 동작이 발생하거나 향후 업그레이드가 어려워질 수 있습니다. 사용자 지정을 원한다면 인덱스 전용 파이프라인(아래 참고), 특히 <index-name>@custom 파이프라인을 활용하는 것을 권장합니다.
attachment- Attachment 프로세서를 사용해 문서의_attachment필드에 저장된 바이너리 데이터를 일반 텍스트와 메타데이터로 구성된 중첩 객체로 변환합니다.set_body- Set 프로세서를 사용해 이전 단계에서 추출한 일반 텍스트를 복사하여 문서의body필드에 저장합니다.remove_replacement_chars- Gsub 프로세서를 사용해body필드에서 "�" 같은 문자를 제거합니다.remove_extra_whitespace- Gsub 프로세서를 사용해body필드의 연속된 공백 문자를 단일 공백으로 치환합니다. 모든 활용 사례에 완벽하지는 않지만(비활성화 방법은 아래 참고), 검색 결과에서 빈 공간은 줄이고 콘텐츠와 하이라이팅을 더 많이 표시하도록 해줍니다.trim- Trim 프로세서를 사용해body필드에 남아 있는 앞뒤 공백을 제거합니다.remove_meta_fields- 파이프라인의 마지막 단계로 Remove 프로세서를 사용해 임시 저장 용도나 제어 흐름 매개변수로 파이프라인 내 다른 곳에서 사용되었을 수 있는 특수 필드를 제거합니다.
search-default-ingestion 파이프라인이 항상 모든 프로세서를 실행하는 것은 아닙니다. 개별 문서의 내용에 따라 프로세서를 조건부로 실행하는 수집 파이프라인 기능을 활용합니다.
_extract_binary_content- 소스 문서에 이 필드가 있고 값이true이면 파이프라인은attachment,set_body,remove_replacement_chars프로세서를 실행하려고 시도합니다.attachment프로세서가 출력을 내려면 문서에 base64로 인코딩된 바이너리 데이터가 담긴_attachment필드도 있어야 합니다. 소스 문서에_extract_binary_content필드가 없거나 값이false이면 이 프로세서들은 건너뜁니다._reduce_whitespace- 소스 문서에 이 필드가 있고 값이true이면 파이프라인은remove_extra_whitespace와trim프로세서를 실행하려고 시도합니다. 이 프로세서들은body필드에만 적용됩니다. 소스 문서에_reduce_whitespace필드가 없거나 값이false이면 이 프로세서들은 건너뜁니다.
커넥터는 인덱스의 Pipeline 탭 설정에 따라 이러한 제어 흐름 매개변수를 자동으로 추가합니다. 새로 생성되는 인덱스에 적용될 설정을 제어하려면 배포 전체 콘텐츠 설정을 참고하세요. Pipeline Settings를 참고하세요.
인덱스의 Kibana UI에서 Pipelines 탭을 선택한 다음 Copy and customize를 선택하면 해당 인덱스 전용 파이프라인 3개를 빠르게 생성할 수 있습니다. 이 3개의 파이프라인이 해당 인덱스에서 search-default-ingestion을 대체합니다. <index-name> 파이프라인은 search-default-ingestion 파이프라인 기능의 상위 집합이므로 이 작업으로 잃는 것은 없습니다.
"copy and customize" 버튼은 모든 Elastic 구독 수준에서 제공되지는 않습니다. Elastic Cloud 및 자체 관리형 배포의 Elastic 구독 페이지를 참고하세요.
이 파이프라인은 search-default-ingestion 파이프라인과 모양과 동작이 매우 비슷하지만 두 개의 프로세서가 추가되어 있습니다.
이 파이프라인의 이름을 변경하면 안 됩니다.
이 파이프라인은 "관리형" 파이프라인입니다. 즉, 편집을 염두에 두고 만들어진 것이 아닙니다. 이 파이프라인을 수동으로 편집하거나 업데이트하면 의도치 않은 동작이 발생하거나 향후 업그레이드가 어려워질 수 있습니다. 사용자 지정을 원한다면 <index-name>@custom 파이프라인을 활용하는 것을 권장합니다.
search-default-ingestion 파이프라인에서 상속한 프로세서 외에도 인덱스 전용 파이프라인은 다음을 정의합니다:
index_ml_inference_pipeline- Pipeline 프로세서를 사용해<index-name>@ml-inference파이프라인을 실행합니다. 이 프로세서는 소스 문서에 값이true인_run_ml_inference필드가 포함된 경우에만 실행됩니다.index_custom_pipeline- Pipeline 프로세서를 사용해<index-name>@custom파이프라인을 실행합니다.
search-default-ingestion 파이프라인과 마찬가지로 <index-name> 파이프라인도 항상 모든 프로세서를 실행하지는 않습니다. _extract_binary_content와 _reduce_whitespace 제어 흐름 매개변수 외에 <index-name> 파이프라인은 다음도 지원합니다:
_run_ml_inference- 소스 문서에 이 필드가 있고 값이true이면 파이프라인은index_ml_inference_pipeline프로세서를 실행하려고 시도합니다. 소스 문서에_run_ml_inference필드가 없거나 값이false이면 이 프로세서는 건너뜁니다.
커넥터는 인덱스의 Pipeline 탭 설정에 따라 이러한 제어 흐름 매개변수를 자동으로 추가합니다. 새로 생성되는 인덱스에 적용될 설정을 제어하려면 배포 전체 콘텐츠 설정을 참고하세요. Pipeline Settings를 참고하세요.
이 파이프라인은 처음에는 비어 있지만(프로세서 없음), 인덱스의 Pipelines 탭을 통하거나 내비게이션 메뉴 또는 전역 검색 필드를 사용해 Ingest Pipelines 관리 페이지로 이동하여 Kibana UI에서 내용을 추가할 수 있습니다. search-default-ingestion 파이프라인이나 <index-name> 파이프라인과 달리 이 파이프라인은 "관리형"이 아닙니다.
Pipelines 탭에서 인덱스에 하나 이상의 ML 추론 파이프라인을 추가할 수 있습니다. 이 파이프라인은 해당 인덱스에 구성된 모든 ML 추론 파이프라인의 컨테이너 역할을 합니다. 인덱스에 추가된 각 ML 추론 파이프라인은 pipeline 프로세서를 통해 <index-name>@ml-inference 내에서 참조됩니다.
이 파이프라인의 이름을 변경하면 안 됩니다.
ML 모델과 해당 모델을 사용하는 ML 추론 파이프라인을 관리하려면 monitor_ml Elasticsearch 클러스터 권한이 필요합니다.
이 파이프라인은 처음에는 비어 있지만(프로세서 없음), 인덱스의 Pipelines 탭을 통하거나 내비게이션 메뉴 또는 전역 검색 필드를 사용해 Ingest Pipelines 관리 페이지로 이동하여 Kibana UI에서 내용을 추가할 수 있습니다. search-default-ingestion 파이프라인이나 <index-name> 파이프라인과 달리 이 파이프라인은 "관리형"이 아닙니다.
이름을 그대로 유지하는 한 이 파이프라인에 내용을 추가하거나 편집하는 것이 권장됩니다. 이는 데이터에 사용자 지정 처리와 변환을 추가할 수 있는 편리한 훅을 제공합니다. 어떤 옵션을 사용할 수 있는지 수집 파이프라인 문서를 꼭 읽어보세요.
이 파이프라인의 이름을 변경하면 안 됩니다.
app_search_crawler- 8.3부터 App Search 웹 크롤러는 바이너리 콘텐츠 추출에 이 파이프라인을 사용해 왔습니다. 이 파이프라인과 그 사용법에 대해서는 App Search Guide에서 더 자세히 확인할 수 있습니다. 8.3에서 8.5 이상으로 업그레이드할 때는app_search_crawler파이프라인에 가한 변경 사항을 반드시 기록해 두세요. 일관된 데이터 처리를 보장하려면 이러한 변경 사항을 각 인덱스의<index-name>@custom파이프라인에 다시 적용해야 합니다. 8.5 이상에서는 App Search Guide에 언급된 구성에 더해 바이너리 콘텐츠를 활성화하는 인덱스 설정이 필요합니다.ent_search_crawler- 8.4부터 Elastic 웹 크롤러는 바이너리 콘텐츠 추출에 이 파이프라인을 사용해 왔습니다. 이 파이프라인과 그 사용법에 대해서는 Elastic web crawler Guide에서 더 자세히 확인할 수 있습니다. 8.4에서 8.5 이상으로 업그레이드할 때는ent_search_crawler파이프라인에 가한 변경 사항을 반드시 기록해 두세요. 일관된 데이터 처리를 보장하려면 이러한 변경 사항을 각 인덱스의<index-name>@custom파이프라인에 다시 적용해야 합니다. 8.5 이상에서는 Elastic web crawler Guide에 언급된 구성에 더해 바이너리 콘텐츠를 활성화하는 인덱스 설정이 필요합니다.ent-search-generic-ingestion- 8.5부터 Native Connectors, Connector Clients, 그리고 새로운(8.4 초과) Elastic 웹 크롤러 인덱스가 모두 기본적으로 이 파이프라인을 사용했습니다. 이 파이프라인은search-default-ingestion파이프라인으로 발전했습니다.search-default-ingestion- 9.0부터 커넥터는 기본적으로 이 파이프라인을 사용해 왔습니다. 이 파이프라인에 대해서는 위에서 더 자세히 읽어볼 수 있습니다. 이 파이프라인은 "관리형"이므로app_search_crawler또는ent_search_crawler에 가했던 수정 사항을search-default-ingestion에 적용해서는 안 됩니다. 그러한 사용자 지정이 필요하다면 인덱스 전용 수집 파이프라인을 활용하고 모든 수정 사항을<index-name>@custom파이프라인에 두세요.