SQL 및 PPL 식별자(identifiers)
SQL 및 PPL 식별자(identifiers)
식별자(identifier)는 인덱스 이름, 필드 이름, 별칭(alias) 같은 데이터베이스 객체에 이름을 붙이는 ID예요. OpenSearch는 일반 식별자(regular identifiers)와 구분 식별자(delimited identifiers) 두 가지 유형의 식별자를 지원해요.
출처: 문서
본문
일반 식별자(Regular identifiers)
일반 식별자는 ASCII 문자(대문자 또는 소문자)로 시작하는 문자열의 연속이에요. 다음 문자는 문자, 숫자, 밑줄(_)이 올 수 있으며 예약 키워드(reserved keyword)는 될 수 없어요. 공백과 다른 특수 문자도 허용되지 않아요.
OpenSearch는 다음과 같은 일반 식별자를 지원해요.
- 점(
.)으로 시작하는 식별자: 인덱스를 숨길 때 사용해요. 예).opensearch-dashboards @기호로 시작하는 식별자: Logstash 수집에서 생성된 메타 필드에 사용해요.- 중간에 하이픈(
-)이 있는 식별자: 날짜 정보가 있는 인덱스 이름에 사용해요. - 별표(
*)가 있는 식별자: 인덱스 패턴의 와일드카드 매칭에 사용해요.
일반 식별자는 백틱이나 이스케이프 문자 없이 이름을 사용할 수 있어요. 이 예시에서 source, fields, account_number, firstname, lastname은 모두 식별자예요. 이 중 source 필드는 예약 식별자예요.
SELECT account_number, firstname, lastname FROM accounts;
이 쿼리는 다음과 같은 결과를 반환해요.
| account_number | firstname | lastname |
|---|---|---|
| 1 | Amber | Duke |
| 6 | Hattie | Bond |
| 13 | Nanette | Bates |
| 18 | Dale | Adams |
구분 식별자(Delimited identifiers)
구분 식별자는 일반 식별자가 허용하지 않는 특수 문자를 포함할 수 있어요. 구분 식별자는 백틱(`)으로 감싸야 하며, 백틱은 식별자를 특수 문자와 구분해줘요.
인덱스 이름에 점(.)이 포함된 경우, 예를 들어 log-2021.01.11처럼, 백틱을 사용한 구분 식별자로 이스케이프해요: log-2021.01.11.
구분 식별자를 사용하는 전형적인 예시는 다음과 같아요.
- 예약 키워드가 있는 식별자
- 점(
.)이 있는 식별자. 마찬가지로-는 날짜 정보를 포함하는 데 사용해요. - 다른 특수 문자(예: 유니코드 문자)가 있는 식별자
백틱으로 인덱스 이름을 인용하려면:
source=`accounts` | fields `account_number`;
이 쿼리는 다음과 같은 결과를 반환해요.
| account_number |
|---|
| 1 |
| 6 |
| 13 |
| 18 |
대소문자 구분(Case sensitivity)
식별자는 대소문자를 구분해요. OpenSearch에 저장된 값과 정확히 동일해야 해요.
예를 들어 source=Accounts를 실행하면 실제 인덱스 이름이 소문자이므로 인덱스를 찾을 수 없다는 예외가 발생해요.