Elastic Search 형태소 분석

_analyze API

text로 들어온 문장을 정해진 설정에 맞게 형태소 분석을 해준다.

# 띄워쓰기 기준으로 token화
GET _analyze
{
  "text": "The Articles and Tutorials section features in-depth documents designed to give practical help to developers working with AWS",
  "tokenizer": "whitespace"
}

# lowercase : 대문자 -> 소문자
# stop : the, and 등의 불용어 삭제
# snowball : s, es 삭제
GET _analyze
{
  "text": "The Articles and Tutorials section features in-depth documents designed to give practical help to developers working with AWS",
  "tokenizer": "whitespace",
  "filter": [
      "lowercase",
      "stop",
			"snowball"
    ]
}

특정 Field에 analyzer 적용

해당 컬럼에 데이터를 저장할 때, 자동으로 형태소 분석을 해준다.

PUT my_index
{
  "mappings": {
    "properties": {
      "message" : {
        "type": "text",
        "analyzer": "snowball"
      }
    }
  }
}

사용자 정의 analyzer 개발

# my_a 라는 analyzer 개발
PUT my_index
{
  "settings": {
    "index" : {
      "analysis" : {
        "analyzer":{
          "my_a": {
            "type": "custom",
            "tokenizer": "whitespace",
            "filter": [
              "lowercase",
              "stop",
              "snowball"
            ]
          }
        }
      }
    }
  },
	"mappings": {
    "properties": {
      "message":{
        "type": "text",
        "analyzer": "my_a"
      }
    }
  }
}

# my_a를 활용해 형태소 분석
GET my_index/_analyze
{
  "analyzer": "my_a",
  "text": [
    "The Articles and Tutorials section features in-depth documents designed to give practical help to developers working with AWS"
  ]
}

Discussion and feedback