데이터 스트림 사용
원본 보기데이터 스트림 사용
데이터 스트림을 설정한 후에는 다음 작업을 수행할 수 있습니다.
- 데이터 스트림에 문서 추가
- 데이터 스트림 검색
- 데이터 스트림 통계 조회
- 데이터 스트림 수동 롤오버
- 닫힌 백킹 인덱스 열기
- 데이터 스트림으로 리인덱싱
- 쿼리로 데이터 스트림의 문서 업데이트
- 쿼리로 데이터 스트림의 문서 삭제
- 백킹 인덱스의 문서 업데이트 또는 삭제
개별 문서를 추가하려면 index API를 사용합니다. 인제스트 파이프라인도 지원됩니다.
POST /my-data-stream/_doc/
{
"@timestamp": "2099-03-08T11:06:07.000Z",
"user": {
"id": "8a4f500d"
},
"message": "Login successful"
}
index API의 PUT /<target>/_doc/<_id> 요청 형식으로는 데이터 스트림에 새 문서를 추가할 수 없습니다. 문서 ID를 지정하려면 대신 PUT /<target>/_create/<_id> 형식을 사용하세요. op_type은 create만 지원됩니다.
한 번의 요청으로 여러 문서를 추가하려면 bulk API를 사용합니다. create 액션만 지원됩니다.
PUT /my-data-stream/_bulk?refresh
{"create":{ }}
{ "@timestamp": "2099-03-08T11:04:05.000Z", "user": { "id": "vlb44hny" }, "message": "Login attempt failed" }
{"create":{ }}
{ "@timestamp": "2099-03-08T11:06:07.000Z", "user": { "id": "8a4f500d" }, "message": "Login successful" }
{"create":{ }}
{ "@timestamp": "2099-03-09T11:07:08.000Z", "user": { "id": "l7gk7f82" }, "message": "Logout successful" }
다음 검색 API가 데이터 스트림을 지원합니다.
하나 이상의 데이터 스트림에 대한 통계를 조회하려면 data stream stats API를 사용합니다.
GET /_data_stream/my-data-stream/_stats?human=true
데이터 스트림을 수동으로 롤오버하려면 rollover API를 사용합니다. 수동 롤오버 시 두 가지 방법이 있습니다.
즉시 롤오버를 트리거하려면 다음과 같이 합니다.
POST /my-data-stream/_rollover/또는 다음 인덱싱 이벤트가 발생할 때까지 롤오버를 미루려면 다음과 같이 합니다.
POST /my-data-stream/_rollover?lazy자주 업데이트되지 않는 데이터 스트림에서 비어 있는 백킹 인덱스가 생기지 않도록 하려면 두 번째 방법을 사용하세요.
닫힌 백킹 인덱스는 해당 데이터 스트림을 검색하더라도 검색할 수 없습니다. 또한 닫힌 인덱스의 문서는 업데이트하거나 삭제할 수 없습니다.
닫힌 백킹 인덱스를 다시 열려면 해당 인덱스에 직접 open index API 요청을 보냅니다.
POST /.ds-my-data-stream-2099.03.07-000001/_open/
데이터 스트림의 닫힌 백킹 인덱스를 모두 다시 열려면 스트림에 open index API 요청을 보냅니다.
POST /my-data-stream/_open/
기존 인덱스, 별칭 또는 데이터 스트림의 문서를 데이터 스트림으로 복사하려면 reindex API를 사용합니다. 데이터 스트림은 추가 전용이므로, 데이터 스트림으로 리인덱싱할 때는 op_type을 create로 지정해야 합니다. 리인덱싱으로는 데이터 스트림의 기존 문서를 업데이트할 수 없습니다.
POST /_reindex
{
"source": {
"index": "archive"
},
"dest": {
"index": "my-data-stream",
"op_type": "create"
}
}
지정한 쿼리와 일치하는 데이터 스트림의 문서를 업데이트하려면 update by query API를 사용합니다.
POST /my-data-stream/_update_by_query
{
"query": {
"match": {
"user.id": "l7gk7f82"
}
},
"script": {
"source": "ctx._source.user.id = params.new_id",
"params": {
"new_id": "XgdX0NoX"
}
}
}
지정한 쿼리와 일치하는 데이터 스트림의 문서를 삭제하려면 delete by query API를 사용합니다.
POST /my-data-stream/_delete_by_query
{
"query": {
"match": {
"user.id": "vlb44hny"
}
}
}
필요한 경우 문서가 저장된 백킹 인덱스에 요청을 보내 데이터 스트림의 문서를 업데이트하거나 삭제할 수 있습니다. 이때 다음 정보가 필요합니다.
- 문서 ID
- 해당 문서가 저장된 백킹 인덱스의 이름
- 문서를 업데이트하는 경우, 해당 문서의 시퀀스 번호와 프라이머리 텀
이 정보를 얻으려면 검색 요청을 사용합니다.
GET /my-data-stream/_search
{
"seq_no_primary_term": true,
"query": {
"match": {
"user.id": "yWIumJd7"
}
}
}
응답:
{
"took": 20,
"timed_out": false,
"_shards": {
"total": 3,
"successful": 3,
"skipped": 0,
"failed": 0
},
"hits": {
"total": {
"value": 1,
"relation": "eq"
},
"max_score": 0.2876821,
"hits": [
{
"_index": ".ds-my-data-stream-2099.03.08-000003",
"_id": "bfspvnIBr7VVZlfp2lqX",
"_seq_no": 0,
"_primary_term": 1,
"_score": 0.2876821,
"_source": {
"@timestamp": "2099-03-08T11:06:07.000Z",
"user": {
"id": "yWIumJd7"
},
"message": "Login successful"
}
}
]
}
}
- 일치하는 문서가 저장된 백킹 인덱스
- 해당 문서의 문서 ID
- 해당 문서의 현재 시퀀스 번호
- 해당 문서의 프라이머리 텀
문서를 업데이트하려면 유효한 if_seq_no 및 if_primary_term 인수를 포함한 index API 요청을 사용합니다.
PUT /.ds-my-data-stream-2099-03-08-000003/_doc/bfspvnIBr7VVZlfp2lqX?if_seq_no=0&if_primary_term=1
{
"@timestamp": "2099-03-08T11:06:07.000Z",
"user": {
"id": "8a4f500d"
},
"message": "Login successful"
}
문서를 삭제하려면 delete API를 사용합니다.
DELETE /.ds-my-data-stream-2099.03.08-000003/_doc/bfspvnIBr7VVZlfp2lqX
한 번의 요청으로 여러 문서를 삭제하거나 업데이트하려면 bulk API의 delete, index, update 액션을 사용합니다. index 액션에는 유효한 if_seq_no 및 if_primary_term 인수를 포함하세요.
PUT /_bulk?refresh
{ "index": { "_index": ".ds-my-data-stream-2099.03.08-000003", "_id": "bfspvnIBr7VVZlfp2lqX", "if_seq_no": 0, "if_primary_term": 1 } }
{ "@timestamp": "2099-03-08T11:06:07.000Z", "user": { "id": "8a4f500d" }, "message": "Login successful" }