반응형
📝인덱스 삭제
DELETE board
# board 인덱스 삭제
📝레코드 추가
POST board/_doc/1
{
"title" : "한국항공우주산업 너무 재미있어요."
}
# board 인덱스 1번 레코드의 title필드에 값 추가
📝인덱스 레코드 조회
GET board/_search
{
"query": {
"match": {
"title": {
"query": "한국"
}
}
}
}
# board 인덱스에 title 필드에 "한국" 포함되는 조건 조회
📝분석기를 이용한 텍스트 형태소 분석 결과 조회
GET board/_analyze
{
"analyzer": "nori",
"text": "한국항공우주산업"
}
# board 인덱스에 nori 분석기를 사용한 형태소 분해 결과 조회 (여기서 nori는 노리형태소분석기)
# 형태소 분해 결과와 일치하는 단어로 검색해야 검색에 노출된다.
GET board/_analyze
{
"analyzer": "nori",
"text": "한국항공우주산업",
"explain": true
}
# explain : nori 분석기를 이용해서 나오는 모든 형태소 분해 결과를 상세히 보여준다 (품사 종류 등...)
# stoptags filter 적용이 안 된 상태로 다 보여준다.
📝인덱스 생성
PUT board
{
"mappings" : {
"properties" : {
"category" : {
"type" : "text"
},
"company" : {
"type" : "text"
},
"contents" : {
"type" : "text",
"analyzer": "nori"
},
"del_yn" : {
"type" : "text"
},
"file_path" : {
"type" : "text"
},
"file_contents" : {
"type" : "text"
},
"id" : {
"type" : "integer"
},
"modi_date" : {
"type" : "date"
},
"reg_date" : {
"type" : "text"
},
"title" : {
"type" : "text"
},
"writer" : {
"type" : "text"
}
}
},
"settings" : {
"index" : {
"analysis" : {
"filter" : {
"nori_posfilter" : {
"type" : "nori_part_of_speech",
"stoptags" : [
"J",
"SP",
"VSV",
"UNKNOWN",
"UNA",
"SSO",
"SSC",
"SP",
"SH",
"SF",
"SE",
"SC",
"NA",
"E",
"NNB",
"XSV",
"VV",
"XSA",
"VA",
"VX",
"VCP"
]
}
},
"analyzer" : {
"nori" : {
"filter" : [
"nori_posfilter"
],
"tokenizer" : "korean_nori_tokenizer"
}
},
"tokenizer" : {
"korean_nori_tokenizer" : {
"type" : "nori_tokenizer",
"decompound_level" : "mixed",
"user_dictionary" : "dictionary/newly_coined_word/newly_coined_word_sungjaefileinc.txt"
}
}
}
}
}
}
|―mapping
|―settings
|― index
|― analysis
|― filter
|― analyzer
|― tokenizer
📝매핑
"mappings" : {
"properties" : {
"category" : {
"type" : "text"
},
"company" : {
"type" : "text"
},
"contents" : {
"type" : "text",
"analyzer": "nori"
},
"del_yn" : {
"type" : "text"
},
"file_path" : {
"type" : "text"
},
"file_contents" : {
"type" : "text"
},
"id" : {
"type" : "integer"
},
"modi_date" : {
"type" : "date"
},
"reg_date" : {
"type" : "text"
},
"title" : {
"type" : "text"
},
"writer" : {
"type" : "text"
}
}
# 키 이름은 category 이고 type은 text (전문)이다.
# ....
# 키 이름은 id 이고 type 은 integer(정수)이다.
📝필터
"filter" : {
"nori_posfilter" : {
"type" : "nori_part_of_speech",
"stoptags" : [
"J",
"SP",
"VSV",
"UNKNOWN",
"UNA",
"SSO",
"SSC",
"SP",
"SH",
"SF",
"SE",
"SC",
"NA",
"E",
"NNB",
"XSV",
"VV",
"XSA",
"VA",
"VX",
"VCP"
]
}
}
# nori_posfilter는 filter 이름
# nori_part_of_speech은 nori에서 제공하는 필터로 품사에 대한 제외어(불용어)처리가 가능하다
📝분석기
"analyzer" : {
"nori" : {
"filter" : [
"nori_posfilter"
],
"tokenizer" : "korean_nori_tokenizer"
}
}
# analyzer는 형태소 분석기를 선언한다.
# nori라는 이름이고 filter는 위에 설명한 nori_posfilter를 이용한다.
# tokenizer로는 korean_nori_tokenizer 이름의 분석기를 사용한다 (여기에선 노리형태소분석기)
📝형태소 분석기
"tokenizer" : {
"korean_nori_tokenizer" : {
"type" : "nori_tokenizer",
"decompound_level" : "mixed",
"user_dictionary" : "dictionary/newly_coined_word/newly_coined_word_sungjaefileinc.txt"
}
}
# tokenizer는 형태소 분석기를 의미하며 korean_nori_toknenizer라는 이름이다.
# nori_tokenizer는 노리 형태소 분석기를 의미한다.
# decompound_level은 형태소 분해 방법이다.
# user_dictionary는 사용자 사전이다. (신조어 사전)
반응형
'[ELK]' 카테고리의 다른 글
[ELK] 검색엔진에 사용한 API 모음 (Docker Fargate 설정) (0) | 2023.04.30 |
---|---|
[ELK] 엘라스틱(Elastic) 노리 형태소 분석기 [노리분석기 Nori] (형태소 분석(상세), 불용어[Stopwords], 동의어[Synonym], open, close) (0) | 2022.09.12 |