데이터 스트림 사용

원본 보기

데이터 스트림 사용

데이터 스트림을 설정한 후에는 다음 작업을 수행할 수 있습니다.

개별 문서를 추가하려면 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_typecreate만 지원됩니다.

한 번의 요청으로 여러 문서를 추가하려면 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를 사용합니다. 수동 롤오버 시 두 가지 방법이 있습니다.

  1. 즉시 롤오버를 트리거하려면 다음과 같이 합니다.

    				POST /my-data-stream/_rollover/
    		
  2. 또는 다음 인덱싱 이벤트가 발생할 때까지 롤오버를 미루려면 다음과 같이 합니다.

    				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_typecreate로 지정해야 합니다. 리인덱싱으로는 데이터 스트림의 기존 문서를 업데이트할 수 없습니다.

				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"
    }
  }
}
		

필요한 경우 문서가 저장된 백킹 인덱스에 요청을 보내 데이터 스트림의 문서를 업데이트하거나 삭제할 수 있습니다. 이때 다음 정보가 필요합니다.

이 정보를 얻으려면 검색 요청을 사용합니다.

				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"
        }
      }
    ]
  }
}
		
  1. 일치하는 문서가 저장된 백킹 인덱스
  2. 해당 문서의 문서 ID
  3. 해당 문서의 현재 시퀀스 번호
  4. 해당 문서의 프라이머리 텀

문서를 업데이트하려면 유효한 if_seq_noif_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 APIdelete, index, update 액션을 사용합니다. index 액션에는 유효한 if_seq_noif_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" }