(ElasticSearch) analyzed와 not_analyzed의 차이점

다음과 같이 new-events 타입을 인덱스한다고 해보자

PUT get-together/_mapping/new-events
{
  "properties" : {
    "name" : {
      "type" : "text",
       "index" : "analyzed" 
    }
   }
}

index의 기본값은 analyzed인데,

만약 해당 필드에 있는 값이 "Last night with ElasticSearch"라고 하면
analyzed인 경우는 해당 문장을 단일 텀으로 변경하여 색인 한다.
즉, "last" , "night", "with", "elastisearch"이다.

만약 not_analyzed인 경우는 단일 텀으로 만들지 않고, 전체 문자열을 단일 텀으로 색인한다.
태그 검색 처럼 정확히 일치하는 경우 사용한다. 예를 들어, "big data"인 경우는
"big data"자체가 색인된다.

만약 index 가 no인 경우는 색인을 생략하고 어떠한 텀도 만들지 않아서 특정 필드의 검색이 불가능 할 것이다. 검색할 필요가 없는 경우는 이 옵션을 사용하면 공간의 절약과 색인 및 검색에 필요한 시간도 절약할 수 있을 것이다.

예를들어, 이벤트의 리뷰를 저장한다고 하자. 비록 이 리뷰를 저장하고 보여주는 것이 가치가 있어도 검색할 필요까지는 없을 것이다. 이 경우 그 필드의 색인을 비활성화 함으로써 색인 과정을 더 빠르게 만들고 저장 공간도 절약할 것이다.

댓글

이 블로그의 인기 게시물

(18장) WebSocekt과 STOMP를 사용하여 메시징하기

(네트워크)폴링방식 vs 롱 폴링방식

(ElasticSearch) 결과에서 순서 정렬