Amazon Elasticsearch Service 에서 데이터 인덱싱 - Amazon Elasticsearch Service

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Amazon Elasticsearch Service 에서 데이터 인덱싱

Amazon Elasticsearch Service (Amazon ES) 는 REST API를 사용하기 때문에 문서를 인덱싱하는 방법이 무수히 많습니다. curl 같은 표준 클라이언트를 사용해도 되고, HTTP 요청을 보낼 수 있는 프로그래밍 언어를 사용해도 됩니다. Amazon ES는 상호 작용 과정을 한층 더 간소화하기 위해 다양한 프로그래밍 언어용 클라이언트를 갖추고 있습니다. 고급 사용자는 바로 Amazon Elasticsearch Service HTTP 요청 서명 또는 스트리밍 데이터를 Amazon Elasticsearch Service 로드 단원으로 건너뛸 수 있습니다.

인덱싱에 대한 소개는 Open Distro for Elasticsearch 설명서를 참조하십시오.

인덱스에 대한 이름 지정 제한

Amazon ES 인덱스에는 다음과 같은 이름 지정 제약 조건이 있습니다.

  • 모든 문자는 소문자여야 합니다.

  • 인덱스 이름은 _ 또는 -로 시작할 수 없습니다.

  • 인덱스 이름에는 공백, 쉼표,:,",*,+,/,\,|,?,#,>또는<를 선택합니다.

인덱스 유형 또는 문서 ID 이름에는 민감한 정보를 포함하지 마십시오. Amazon ES는 URI (Uniform Resource Identity) 에 이러한 이름을 사용합니다. 서버 및 애플리케이션에서 흔히 HTTP 요청을 로깅하는데, 그럴 경우 URI에 민감한 정보가 포함된다면 불필요한 데이터 노출이 발생할 수 있습니다.

2018-10-03T23:39:43 198.51.100.14 200 "GET https://elasticsearch_domain/dr-jane-doe/flu-patients-2018/202-555-0100/ HTTP/1.1"

없는 경우에도권한관련 JSON 문서를 보려면 이 가짜 로그 줄을 통해 202-555-0100의 전화 번호를 가진 Doe 박사의 환자 중 한 명이 2018년에 독감에 걸린 적이 있음을 유추할 수 있습니다.

응답 크기 줄이기

_index_bulk API의 응답에는 많은 정보가 포함되어 있습니다. 이 정보는 요청을 해결하거나 재시도 로직을 구현하는 데 유용할 수 있지만 상당한 대역폭을 사용할 수 있습니다. 이 예에서 32바이트 문서를 인덱싱하면 339바이트의 응답이 발생합니다(헤더 포함).

PUT elasticsearch_domain/more-movies/_doc/1 {"title": "Back to the Future"}

응답

{ "_index": "more-movies", "_type": "_doc", "_id": "1", "_version": 4, "result": "updated", "_shards": { "total": 2, "successful": 2, "failed": 0 }, "_seq_no": 3, "_primary_term": 1 }

이 응답 크기는 최소한으로 보일 수 있지만 하루에 1,000,000개의 문서 (초당 약 11.5 문서) 를 인덱싱하는 경우 응답당 339 바이트는 매월 10.17 GB의 다운로드 트래픽으로 작동합니다.

데이터 전송 비용이 우려되는 경우filter_path파라미터를 사용하여 Amazon ES 응답의 크기를 줄입니다. 하지만 실패한 요청을 식별하거나 재시도하는 데 필요한 필드를 필터링하지 않도록 주의하십시오. 이러한 필드는 클라이언트에 따라 다릅니다. 이filter_path파라미터는 모든 Amazon ES REST API에 대해 작동하지만, 자주 호출하는 API (예:_index_bulkAPI:

PUT elasticsearch_domain/more-movies/_doc/1?filter_path=result,_shards.total {"title": "Back to the Future"}

응답

{ "result": "updated", "_shards": { "total": 2 } }

필드를 포함하는 대신-접두사. filter_path는 와일드카드도 지원합니다.

POST elasticsearch_domain/_bulk?filter_path=-took,-items.index._* { "index": { "_index": "more-movies", "_id": "1" } } {"title": "Back to the Future"} { "index": { "_index": "more-movies", "_id": "2" } } {"title": "Spirited Away"}

응답

{ "errors": false, "items": [ { "index": { "result": "updated", "status": 200 } }, { "index": { "result": "updated", "status": 200 } } ] }