Execute Direct Query API
Execute Direct Query API
이 기능은 실험적 기능이라 프로덕션 환경에서는 사용을 권장하지 않아요. 기능 진행 상황에 대한 업데이트나 피드백이 있으면 OpenSearch 포럼에서 토론에 참여해 주세요.
데이터 소스의 네이티브 질의 언어를 사용해 외부 데이터 소스에 대해 질의를 실행해요.
이 API를 사용하기 전에 먼저 데이터 소스를 구성해야 해요. 데이터 소스 구성 방법은 Data sources 문서를 참고하세요.
출처: 문서
본문
엔드포인트 (Endpoint)
POST /_plugins/_directquery/_query/{dataSource}
경로 파라미터 (Path parameters)
다음 표는 사용 가능한 경로 파라미터를 나열해요.
| Parameter | Data type | Description |
|---|---|---|
dataSource |
String | 질의할 구성된 데이터 소스의 이름이에요. 필수예요. |
요청 본문 필드 (Request body fields)
다음 표는 사용 가능한 요청 본문 필드를 나열해요.
| Field | Data type | Description |
|---|---|---|
query |
String | 데이터 소스의 네이티브 질의 언어로 실행할 질의예요(예: Prometheus의 PromQL). 필수예요. |
language |
String | 질의 언어예요. Prometheus 데이터 소스에는 PROMQL을 사용해요. 필수예요. |
options |
Object | 데이터 소스별 질의 옵션이에요. Prometheus options를 참고하세요. 선택 사항이에요. |
maxResults |
Integer | 반환할 최대 결과 수예요. Prometheus에만 적용돼요. 선택 사항이에요. |
timeout |
Integer | 질의 타임아웃(초 단위)이에요. Prometheus에만 적용돼요. 선택 사항이에요. |
sessionId |
String | 질의 추적을 위한 세션 식별자예요. 제공하지 않으면 UUID가 자동 생성돼요. 선택 사항이에요. |
Prometheus 옵션
다음 옵션은 Prometheus 데이터 소스에 특화되어 있으며 options 객체에 제공해야 해요.
| Field | Data type | Description |
|---|---|---|
options.queryType |
String | 질의 유형이에요. 유효한 값은 instant 또는 range예요. 기본값은 instant이에요. 선택 사항이에요. |
options.time |
String | instant 질의의 평가 타임스탬프로, Unix 타임스탬프로 지정해요. instant 질의에 필수예요. |
options.start |
String | range 질의의 시작 타임스탬프로, Unix 타임스탬프로 지정해요. range 질의에 필수예요. |
options.end |
String | range 질의의 종료 타임스탬프로, Unix 타임스탬프로 지정해요. range 질의에 필수예요. |
options.step |
String | range 질의의 질의 해상도 스텝 폭으로, 기간 형식으로 지정해요(예: 15s, 1m, 1h). range 질의에 필수예요. |
예시 요청: Instant 질의
다음 요청은 Prometheus 데이터 소스에 대해 instant PromQL 질의를 실행해요.
POST /_plugins/_directquery/_query/my_prometheus
{
"query": "up",
"language": "PROMQL",
"options": {
"queryType": "instant"
}
}
예시 요청: Range 질의
다음 요청은 시간 경과에 따른 CPU 사용량을 가져오는 range 질의를 실행해요.
POST /_plugins/_directquery/_query/my_prometheus
{
"query": "rate(node_cpu_seconds_total{mode=\"user\"}[5m])",
"language": "PROMQL",
"options": {
"queryType": "range",
"start": "2024-01-01T00:00:00Z",
"end": "2024-01-01T01:00:00Z",
"step": "60s"
}
}
예시 응답
{
"queryId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"sessionId": "session-uuid-here",
"results": {
"status": "success",
"data": {
"resultType": "vector",
"result": [
{
"metric": {
"__name__": "up",
"instance": "localhost:9090",
"job": "prometheus"
},
"value": [1704067200, "1"]
}
]
}
}
}
응답 본문 필드 (Response body fields)
다음 표는 모든 응답 본문 필드를 나열해요.
| Field | Data type | Description |
|---|---|---|
queryId |
String | 실행된 질의의 고유 식별자예요. |
sessionId |
String | 관련 질의 추적을 위한 세션 식별자예요. |
results |
Object | 데이터 소스의 질의 결과로, 데이터 소스의 네이티브 응답 형식으로 반환돼요. |