(ElasticSearch) 데이터 분석

엘라스틱 서치는 도큐먼트가 색인에 추가되기 전에 모든 분석된 필드를 위해 다음과 같은 단계를 거친다.


  • 문자 필터링 - 문자 필터를 이용해서 문자들을 변환한다.
  • 텍스트를 토큰으로 분해 - 텍스트를 한 개 이상의 토큰의 집합으로 분해한다.
  • 토큰 필터링 - 토큰 필터를 사용해서 개별 토큰을 변환한다.
  • 토큰 색인 - 토큰을 색인에 저장한다.

1.  문자 필터링

"share your experiance with NoSql & big data technologies"
여기서 
& => and로 변환한다.
"share your experiance with NoSql and big data technologies"


2. 토큰으로 분해하기

루씬 자체는 데이터의 큰 문자열에 작용하지 않는대신 토큰으로 알려져 있는 것에 작동한다.
예를들어, 영문에서 사용하는 일반적인 토크나이저는 표준 토크나이저인데, 공백과 개행같은 화이트스페이스 뿐만 아니라 대시(dash)같은 문자를 기반으로 텍스트를 토큰으로 분해한다.

share, your, experiance, with, NoSql, and, big, data, technologies,


3. 토큰 필터링




4. 토큰 색인







* 색인 생성시 분석기 추가하기


색인을 위한 주 샤드와 레플리카 샤드 개수를 위한 settings는 다음과 같다.


POST get-together
{
"settings" : {
"number_of_shards" : 2,
"number_of_replica" : 1
},
"mappings" : {
....
}
}

사용자 지정 분석키를 추가하는 것은 index키 아래에 있는 settings 설정에 별도의 맵으로 지정한다.
이 키에 사용하려는 사용자 지정 분석기를 지정하고, 여기에 색인이 사용하는 사용자 지정 토크나이저, 토큰필터, 문자 필터를 포함할 수 있다.



POST get-together
{
"settings" : {
"number_of_shards" : 2,
"number_of_replica" : 1,
"index" : {
"analysis" : {

"analyzer" : {
"myCustomAnalyzer" : {
"type" : "custom",
"tokenizer" : "myCustomToknizer",
"filter" : ["myCustomFilter1", "myCustomFilter2"],
"char_filter" : ["myCustomCharFilter"]
}
},

"tokenizer" : {
"myCustomToknizer" : {
"type": "letter"
}
},

"filter" : {
"myCustomFilter1" : {
"type" : "lowercase"
},
"myCustomFilter2" : {
"type" : "kstem"
}
},
"char_filter" : {
"myCustomCharFilter" : {
"type" : "mapping",
"mappings" : ["ph=>f","u=>you"]
}
}
}
}
},
"mappings" : {
....
}
}


* 매핑에서 필드를 위한 분서기 지정하기


사용자 지정 분석기 중 하나를 사용해서 분석하는 매핑을 가진 특정 필드를 어떻게 지정하는 가인데, 이는 단순히 매핑에서 분석 필드를 설정해서 필드에 대한 분석기를 지정하면 된다.
description필드에 매핑있다면  다음과 같이 분석기를 설정한다.

{
"mappings" ; {
"document" : {
"properties": {
"description" : {
"type" : "text",
"analyzer" : "myCustomAnalyzer"
}
}
}
}
}

* 특정 필드를 모두 분석하지 않기


{
"mappings" : {
"document" : {
"properties" : {
"name" : {
"type" : "text",
"index" : "not_analyzed"
}
}
}
}
}



댓글

이 블로그의 인기 게시물

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

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

(ElasticSearch) 결과에서 순서 정렬