-
카테고리
-
세부 분야
데브옵스 · 인프라
-
해결 여부
해결됨
#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
강진우
지식공유자2023.03.31
아마도 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
분석기로 분석한다 라고 표현할 수 있습니다.
답변 1