• 카테고리

    질문 & 답변
  • 세부 분야

    데브옵스 · 인프라

  • 해결 여부

    해결됨

#8-text vs keyword에서 standard, keyword, text 구분.

23.03.31 12:13 작성 조회수 190

0

_analyzer를 사용하실때 예제로 (1:30부터)

{

"analyzer" : "standard"

"text" : "I am a boy"

} ,

{

"analyzer" : "keyword"

"text" : "I am a boy"

}

이렇게 써주시고 뒤에 비교를 설명하실때는

text vs keyword로 해주셨는데

 

위 예제에서 "standard"위치에 text가 들어가야 했는지 아니면 뒤 설명이 standard와 keyword로 표현하셔야 했던건지

설명 하신 그대로 이해를 해야하는 건지 좀 헷갈립니다.

답변 1

답변을 작성해보세요.

1

아마도 keyword 타입의 경우 타입의 이름과 분석기의 이름이 같아서 헷갈려 하실 수 있을 것 같습니다. analyzer 에는 말 그래도 문자열을 분석할 때 사용할 분석기를 명시해 주는 곳 입니다. text 필드에 들어갈 문자열을 분석할 분석기로 standard 라는 분석기를 설정하거나, keyword 라는 분석기를 설정하거나 해 주는 거죠. keyword의 경우 필드 타입과 분석기의 이름이 같아서 헷갈릴 수 있습니다.

테스트를 해보시려 한다면 아래와 같이 해볼 수 있습니다. 문자열을 standard 분석기로 분석할 때는 아래와 같이

curl -X GET "localhost:9200/_analyze?pretty" -H 'Content-Type: application/json' -d'
{
  "analyzer" : "standard",
  "text" : "I am a boy"
}
'

그리고 문자열을 keyword 분석기로 분석 할 때는 아래와 같이 해보면 됩니다.

curl -X GET "localhost:9200/_analyze?pretty" -H 'Content-Type: application/json' -d'
{
  "analyzer" : "keyword",
  "text" : "I am a boy"
}
'

두 개의 결과가 서로 다를 텐데요, 그래서 text 타입과 keyword 타입이 둘 다 문자열이지만 분석기가 달라서 다른 inverted index를 생성 한다는 것을 볼 수 있습니다.

조금 더 이해를 돕자면, text 타입은 standard 분석기로 분석하고 (물론 standard 분석기로만 분석하는 건 아니지만요), keyword 타입은 keyword 분석기로 분석한다 라고 표현할 수 있습니다.