구문 분석 명령 - Amazon OpenSearch Service

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

구문 분석 명령

parse 명령은 정규식을 사용하여 텍스트 필드를 구문 분석하고 검색 결과에 결과를 추가합니다.

참고

이 PPL 명령을 지원하는 AWS 데이터 소스 통합을 확인하려면 섹션을 참조하세요명령.

구문

다음 구문을 사용합니다.

parse <field> <pattern>
field
  • 필수.

  • 필드는 텍스트 필드여야 합니다.

pattern
  • 필수 문자열입니다.

  • 지정된 텍스트 필드에서 새 필드를 추출하는 데 사용되는 정규식 패턴입니다.

  • 새 필드 이름이 이미 있는 경우 원래 필드를 대체합니다.

정규식

정규식 패턴은 Java 정규식 엔진이 있는 각 문서의 전체 텍스트 필드를 일치시키는 데 사용됩니다. 표현식의 각 명명된 캡처 그룹은 새 STRING 필드가 됩니다.

예제 1: 새 필드 생성

이 예제에서는 각 문서에 host 대해 새 필드를 생성하는 방법을 보여줍니다. host@ email 필드에서 뒤에 오는 호스트 이름이 됩니다. null 필드를 구문 분석하면 빈 문자열이 반환됩니다.

PPL 쿼리:

os> source=accounts | parse email '.+@(?<host>.+)' | fields email, host ; fetched rows / total rows = 4/4 +-----------------------+-------------+ | email | host | |-----------------------+-------------| | jane_doe@example.com | example.com | | john_doe@example.net | example.net | | null | | | juan_li@example.org | example.org | +-----------------------+-------------+
예제 2: 기존 필드 재정의

이 예제에서는 거리 번호가 제거된 기존 address 필드를 재정의하는 방법을 보여줍니다.

PPL 쿼리:

os> source=accounts | parse address '\d+ (?<address>.+)' | fields address ; fetched rows / total rows = 4/4 +------------------+ | address | |------------------| | Example Lane | | Example Street | | Example Avenue | | Example Court | +------------------+
예제 3: 캐스팅된 구문 분석 필드를 기준으로 필터링 및 정렬

이 예제는 address 필드에서 500보다 큰 거리 번호를 정렬하는 방법을 보여줍니다.

PPL 쿼리:

os> source=accounts | parse address '(?<streetNumber>\d+) (?<street>.+)' | where cast(streetNumber as int) > 500 | sort num(streetNumber) | fields streetNumber, street ; fetched rows / total rows = 3/3 +----------------+----------------+ | streetNumber | street | |----------------+----------------| | *** | Example Street | | *** | Example Avenue | | 880 | Example Lane | +----------------+----------------+
제한 사항

구문 분석 명령에는 몇 가지 제한이 있습니다.

  • 구문 분석으로 정의된 필드는 다시 구문 분석할 수 없습니다.

    다음 명령은 작동하지 않습니다.

    source=accounts | parse address '\d+ (?<street>.+)' | parse street '\w+ (?<road>\w+)'
  • 구문 분석으로 정의된 필드는 다른 명령으로 재정의할 수 없습니다.

    where는 다음과 같이 재정의할 street 수 없으므로 문서와 일치하지 않습니다.

    source=accounts | parse address '\d+ (?<street>.+)' | eval street='1' | where street='1' ;
  • 구문 분석에 사용되는 텍스트 필드는 재정의할 수 없습니다.

    street는 재정address의되므로 성공적으로 구문 분석되지 않습니다.

    source=accounts | parse address '\d+ (?<street>.+)' | eval address='1' ;
  • 구문 분석으로 정의된 필드는 stats 명령에서 사용한 후 필터링하거나 정렬할 수 없습니다.

    where 다음 명령에서는 작동하지 않습니다.

    source=accounts | parse email '.+@(?<host>.+)' | stats avg(age) by host | where host=pyrami.com ;