normalizer 매핑 파라미터

normalizer 매핑 파라미터

normalizer 매핑 파라미터는 keyword 필드에 대한 커스텀 정규화(normalization) 과정을 정의해요. 여러 토큰을 생성하는 text 필드용 analyzer와 달리, normalizer는 일련의 토큰 필터를 사용해 필드 값 전체를 단일 토큰으로 변환해요. normalizer를 정의하면 keyword 필드는 저장되기 전에 지정된 필터로 처리되고, 문서의 _source는 변경되지 않은 상태로 유지돼요.

출처: 문서

본문

normalizer 정의하기

다음 요청은 my_normalizer라는 커스텀 normalizer를 가진 products 인덱스를 생성해요. 이 normalizer는 trim과 lowercase 필터를 사용하는 code 필드에 적용돼요:

PUT /products
{
  "settings": {
    "analysis": {
      "normalizer": {
        "my_normalizer": {
          "type": "custom",
          "filter": ["trim", "lowercase"]
        }
      }
    }
  },
  "mappings": {
    "properties": {
      "code": {
        "type": "keyword",
        "normalizer": "my_normalizer"
      }
    }
  }
}

문서를 인덱스에 입력(ingest)하면 code 필드는 여분의 공백을 제거하고 텍스트를 소문자로 변환하는 방식으로 정규화돼요:

PUT /products/_doc/1
{
  "code": "  ABC-123 EXTRA  "
}

쿼리에서 소문자와 정리된(trimmed) 텍스트를 사용해 인덱스된 문서를 검색해요:

POST /products/_search
{
  "query": {
    "term": {
      "code": "abc-123 extra"
    }
  }
}

code 필드가 정규화되어 있기 때문에 term 쿼리는 저장된 문서와 성공적으로 매칭돼요:

{
...
  "hits": {
    "total": {
      "value": 1,
      "relation": "eq"
    },
    "max_score": 0.2876821,
    "hits": [
      {
        "_index": "products",
        "_id": "1",
        "_score": 0.2876821,
        "_source": {
          "code": "  ABC-123 EXTRA  "
        }
      }
    ]
  }
}

더 알아보기 (Learn more)