본문 바로가기
WIKI 기술 지식 베이스

Pattern replace token filter

원문 보기 위키 갱신

출처: 문서

본문

Pattern replace 토큰 필터

pattern_replace 토큰 필터를 사용하면 정규식으로 토큰을 수정할 수 있어요. 이 필터는 토큰에서 패턴을 찾아 지정한 값으로 바꿔 주기 때문에, 인덱싱하기 전에 토큰을 변환하거나 정규화할 때 유연하게 작업할 수 있어요. 분석 과정에서 텍스트를 정리하거나 표준화해야 할 때 특히 유용해요.

파라미터

pattern_replace 토큰 필터는 다음 파라미터로 설정할 수 있어요.

파라미터 필수/선택 데이터 타입 설명
pattern 필수 String 바꿔야 할 텍스트와 일치하는 정규식 패턴이에요.
all 선택 Boolean 일치하는 모든 패턴을 바꿀지 여부예요. false이면 첫 번째 일치 항목만 바꿔요. 기본값은 true예요.
replacement 선택 String 일치한 패턴을 대체할 문자열이에요. 기본값은 빈 문자열이에요.

예제

다음 예제 요청은 text_index라는 새 인덱스를 만들고, 숫자가 포함된 토큰을 [NUM] 문자열로 바꾸도록 pattern_replace 필터가 설정된 애널라이저를 구성해요:

PUT /text_index
{
  "settings": {
    "analysis": {
      "filter": {
        "number_replace_filter": {
          "type": "pattern_replace",
          "pattern": "\\d+",
          "replacement": "[NUM]"
        }
      },
      "analyzer": {
        "number_analyzer": {
          "tokenizer": "standard",
          "filter": [
            "lowercase",
            "number_replace_filter"
          ]
        }
      }
    }
  }
}

{% include copy-curl.html %}

생성된 토큰

다음 요청으로 애널라이저가 생성한 토큰을 확인해 보세요:

POST /text_index/_analyze
{
  "text": "Visit us at 98765 Example St.",
  "analyzer": "number_analyzer"
}

{% include copy-curl.html %}

응답에는 생성된 토큰이 담겨 있어요:

{
  "tokens": [
    {
      "token": "visit",
      "start_offset": 0,
      "end_offset": 5,
      "type": "<ALPHANUM>",
      "position": 0
    },
    {
      "token": "us",
      "start_offset": 6,
      "end_offset": 8,
      "type": "<ALPHANUM>",
      "position": 1
    },
    {
      "token": "at",
      "start_offset": 9,
      "end_offset": 11,
      "type": "<ALPHANUM>",
      "position": 2
    },
    {
      "token": "[NUM]",
      "start_offset": 12,
      "end_offset": 17,
      "type": "<NUM>",
      "position": 3
    },
    {
      "token": "example",
      "start_offset": 18,
      "end_offset": 25,
      "type": "<ALPHANUM>",
      "position": 4
    },
    {
      "token": "st",
      "start_offset": 26,
      "end_offset": 28,
      "type": "<ALPHANUM>",
      "position": 5
    }
  ]
}

더 알아보기 (Learn more)