본문 바로가기
서버

[Elasticsearch] index 매핑 (analyzed, not_analyzed, no)

by 탁구치는 개발자 2017. 12. 1.

다음은 type에 대한 mapping 샘플이다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
curl -XPUT 'localhost:9200/get-together/_mapping/new-events' -d '{
    "new-events": {
       "properties": {
            "name": {
                "type": "string",
                "index": "analyzed"
            }, 
            "name2": {
                "type": "string",
                "index": "not_analyzed"
            },
            "name3": {
                "type": "string",
                "index": "no"
            }
        }
    }
}'
cs


index 매핑에는 3가지의 옵션이 올 수 있다.


analyzed


검색 가능하도록 색인

analyzer를 이용한 tokenized 수행을 통해 색인

ex) "this is my test a sentence" 라는 string이 주어졌을 때 analyzer를 통과하면 다음과 같이 분리된다.

1
2
3
4
5
6
this
is
my
test
a
sentence
cs


다음과 같이 elasticsearch로 요청을 보내어 어떻게 string이 분석되는지 알 수 있다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
$ curl -XGET 'localhost:9200/_analyze?analyzer=standard&pretty' -d 'this is my test a sentence'
{
  "tokens" : [ {
    "token" : "this",
    "start_offset" : 0,
    "end_offset" : 4,
    "type" : "<ALPHANUM>",
    "position" : 0
  }, {
    "token" : "is",
    "start_offset" : 5,
    "end_offset" : 7,
    "type" : "<ALPHANUM>",
    "position" : 1
  }, {
    "token" : "my",
    "start_offset" : 8,
    "end_offset" : 10,
    "type" : "<ALPHANUM>",
    "position" : 2
  }, {
    "token" : "test",
    "start_offset" : 11,
    "end_offset" : 15,
    "type" : "<ALPHANUM>",
    "position" : 3
  }, {
    "token" : "a",
    "start_offset" : 16,
    "end_offset" : 17,
    "type" : "<ALPHANUM>",
    "position" : 4
  }, {
    "token" : "sentence",
    "start_offset" : 18,
    "end_offset" : 26,
    "type" : "<ALPHANUM>",
    "position" : 5
  } ]
}
cs


출처 : Elasticsearch in Action 도서


not_analyzed


검색 가능하도록 색인 (정확한 값 일치)

analyzer를 이용하지 않기 때문에 색인 속도가 빠르다.

분석이 필요 없는 경우 사용

ex) "big data" 라는 string이 주어졌을 때 "big data" 로 검색해야 문서가 출력된다.



no


색인하지 않음

검색 불가능

검색 결과에 포함되어 출력만 가능



기타


1
2
The other simple types (such as long, double, date etc) also accept the index parameter, 
but the only relevant values are no and not_analyzed, as their values are never analyzed.
cs

https://www.elastic.co/guide/en/elasticsearch/guide/current/mapping-intro.html#_index_2


simple types 들은 기본적으로 analyzed 되지 않는다. (default : not_analyzed)