ELK/elasticsearch
[Elasticseach] Path Hierarachy Tokenizer
안기용
2023. 7. 25. 13:49
Path hierachy tokenizer
Elasticsearch에서 계층적인 구조의 데이터를 다루기 위해 사용한 path hierachy 토크나이저에 대한 내용입니다.
공식문서 소개
path hierachy 토크나이저는 파일시스템과 유사한 계층적인 값을 받아 경로 구분자를 기준으로 분리하며, 트리의 각 구성요소에 대한 용어를 생성한다.영어 원문을 직역해서 약간 어색한 감이 있지만, 계층 구조의 데이터를 구분자 기준으로 나누어 계층별로 텀을 생성해 주는 토크나이저 라고 생각하면 편하다.
실행 예시
#request
curl -X POST "localhost:9200/_analyze?pretty" -H 'Content-Type: application/json' -d'
{
"tokenizer": "path_hierarchy",
"text": "/home/elastic/elasticsearch"
}
#response
[/home,/home/elastic,/home/elastic,/home/elastic/elasticsearch]
index 생성
PUT my-index-000001
{
"mappings" : {
"properties" : {
"path" :{
"type" : "text",
"analyzer" : "path_tree",
"fields" : {
"reverse" : {
"type" : "text",
"analyzer" : "path_tree_reverse"
}
}
}
}
},
"settings": {
"analysis": {
"analyzer": {
"path_tree": {
"tokenizer": "path_tokenizer"
},
"path_tree_reverse": {
"tokenizer": "path_tokenizer_reverse"
}
},
"tokenizer": {
"path_tokenizer": {
"type": "path_hierarchy",
"delimiter": "/",
},
"path_tokenizer_reverse": {
"type": "path_hierarchy",
"delimiter": "/",
"reverse" : "true"
}
}
}
}
}
PUT my-index-000001/_doc/1
{
"path" : "/home/elastic/elasticsearch/config"
}
옵션
| option | desc |
|---|---|
| delimiter | 구분자로 사용될 문자 지정. 기본값 '/' |
| replacement | 구분자를 대체할 문자 지정(optional) |
| buffer_size | 한번의 처리로 용어 버퍼로 읽는 문자의 수 |
| reverse | 계층을 역순으로 출력 |
| skip | 건너 뛸 초기 토큰의 수. 기본값 0 |
termvectors
termvectors를 확인해보면 다음과 같다
GET my-index-000001/_termvectors/1?fields=path
{
...
"terms": {
"/home": {
"term_freq": 1,
"tokens": [
{
"position": 0,
"start_offset": 0,
"end_offset": 5
}
]
},
"/home/elastic": {
"term_freq": 1,
"tokens": [
{
"position": 0,
"start_offset": 0,
"end_offset": 13
}
]
},
"/home/elastic/elasticsearch": {
"term_freq": 1,
"tokens": [
{
"position": 0,
"start_offset": 0,
"end_offset": 27
}
]
},
"/home/elastic/elasticsearch/config": {
"term_freq": 1,
"tokens": [
{
"position": 0,
"start_offset": 0,
"end_offset": 34
}
]
}
}
}
}
}
이 문서는 Elsaticsearch 공식 문서를 보고 작성한 내용입니다.