

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

# 데이터 스트림을 사용하여 Amazon OpenSearch Service에서 시계열 데이터 관리
<a name="data-streams"></a>

시계열 데이터를 관리하는 일반적인 워크플로에는 롤오버 인덱스 별칭 생성, 쓰기 인덱스 정의, 백업 인덱스에 대한 공통 매핑 및 설정 정의와 같은 여러 단계가 포함됩니다.

Amazon OpenSearch Service의 데이터 스트림은 이러한 초기 설정 프로세스를 간소화하는 데 도움이 됩니다. 보통 본질적으로 추가 전용인 애플리케이션 로그와 같은 시간 기반 데이터에 대해서는 데이터 스트림이 즉시 작동합니다.

데이터 스트림을 사용하려면 OpenSearch 버전 1.0 이상이 필요합니다.

**참고**  
이 설명서에서는 Amazon OpenSearch Service 도메인에서 데이터 스트림을 시작하는 데 도움이 되는 기본적인 단계를 제공합니다. 포괄적인 설명서를 보려면 OpenSearch 설명서의 [Data streams](https://docs.opensearch.org/latest/opensearch/data-streams/)를 참조하세요.

## 데이터 스트림 시작하기
<a name="data-streams-example"></a>

데이터 스트림은 내부적으로 여러 백업 인덱스로 구성됩니다. 검색 요청은 모든 백업 인덱스로 라우팅되고 인덱싱 요청은 최신 쓰기 인덱스로 라우팅됩니다.

### 1단계: 인덱스 템플릿 생성
<a name="data-streams-example-1"></a>

데이터 스트림을 생성하려면 먼저 인덱스 집합을 데이터 스트림으로 구성하는 인덱스 템플릿을 생성해야 합니다. `data_stream` 객체는 데이터 스트림이며 일반 인덱스 템플릿이 아니라는 것을 나타냅니다. 인덱스 패턴은 데이터 스트림의 이름과 일치합니다:

```
PUT _index_template/logs-template
{
  "index_patterns": [
    "my-data-stream",
    "logs-*"
  ],
  "data_stream": {},
  "priority": 100
}
```

이 경우 수집된 각 문서에는 `@timestamp` 필드가 있어야 합니다. 사용자 지정 타임스탬프 필드를 `data_stream` 객체의 속성으로 정의할 수도 있습니다.

```
PUT _index_template/logs-template
{
  "index_patterns": "my-data-stream",
  "data_stream": {
    "timestamp_field": {
      "name": "request_time"
    }
  }
}
```

### 2단계: 데이터 스트림 생성
<a name="data-streams-example-2"></a>

인덱스 템플릿을 생성한 후에는 데이터 스트림을 생성하지 않고 직접 데이터 수집을 시작할 수 있습니다.

`data_stream` 객체와 일치하는 인덱스 템플릿이 있기 때문에 OpenSearch가 자동으로 데이터 스트림을 생성합니다.

```
POST logs-staging/_doc
{
  "message": "login attempt failed",
  "@timestamp": "2013-03-01T00:00:00"
}
```

### 3단계: 데이터 스트림에 데이터 수집
<a name="data-streams-example-3"></a>

데이터를 데이터 스트림으로 수집하기 위해 일반 인덱싱 API를 사용할 수 있습니다. 인덱싱하는 모든 문서에 타임스탬프 필드가 있는지 확인합니다. 타임스탬프 필드가 없는 문서를 수집하려고 하면 오류 메시지가 표시됩니다.

```
POST logs-redis/_doc
{
  "message": "login attempt",
  "@timestamp": "2013-03-01T00:00:00"
}
```

### 4단계: 데이터 스트림 검색
<a name="data-streams-example-4"></a>

일반 인덱스 또는 인덱스 별칭을 검색하는 것처럼 데이터 스트림을 검색할 수 있습니다. 검색 작업은 모든 백업 인덱스(스트림에 존재하는 모든 데이터) 에 적용됩니다.

```
GET logs-redis/_search
{
  "query": {
    "match": {
      "message": "login"
    }
  }
}
```

### 5단계: 데이터 스트림 롤오버
<a name="data-streams-example-5"></a>

[인덱스 상태 관리(ISM)](ism.md) 정책을 설정하여 데이터 스트림에 대한 롤오버 프로세스를 자동화할 수 있습니다. ISM 정책은 생성 시 백업 인덱스에 적용됩니다. 정책을 데이터 스트림에 연결하면 해당 데이터 스트림의 향후 백업 인덱스에만 영향을 줍니다. 또한 ISM 정책이 백업 인덱스에서 이 정보를 유추하기 때문에 `rollover_alias` 설정을 제공할 필요가 없습니다.

**참고**  
백업 인덱스를 [콜드 스토리지](cold-storage.md)로 롤오버하면 OpenSearch가 데이터 스트림에서 이 인덱스를 제거합니다. 인덱스를 [UltraWarm](ultrawarm.md)으로 다시 이동하더라도 인덱스는 독립적으로 유지되며 원래 데이터 스트림의 일부가 아닙니다. 데이터 스트림에서 인덱스를 제거한 후 스트림을 검색해도 인덱스에서 데이터가 반환되지 않습니다.

**주의**  
데이터 스트림의 쓰기 인덱스는 콜드 스토리지로 마이그레이션할 수 없습니다. 데이터 스트림의 데이터를 콜드 스토리지로 마이그레이션하려면 마이그레이션하기 전에 데이터 스트림을 롤오버해야 합니다.

### 6단계: OpenSearch Dashboards에서 데이터 스트림 관리
<a name="data-streams-example-6"></a>

OpenSearch Dashboards에서 데이터 스트림을 관리하려면 **OpenSearch Dashboards**를 열고 **인덱스 관리(Index Management)**를 선택한 다음 **인덱스(Indices)** 또는 **정책 관리형 인덱스(Policy managed indices)**를 선택합니다.

### 7단계: 데이터 스트림 삭제
<a name="data-streams-example-7"></a>

삭제 작업은 먼저 데이터 스트림의 백업 인덱스를 삭제한 다음 데이터 스트림 자체를 삭제합니다.

데이터 스트림과 숨겨진 모든 백업 인덱스를 삭제하려면 다음을 수행합니다.

```
DELETE _data_stream/name_of_data_stream
```