티스토리 뷰
_analyze API
Term 쿼리
사용자 정의 애널라이저 - Custom Analyzer
텀 벡터 - _termvectors API
PUT my_index3
{
"settings": {
"index": {
"analysis": {
"analyzer": {
"my_custom_analyzer": {
"type": "custom",
"tokenizer": "whitespace",
"filter": [
"lowercase",
"stop",
"snowball"
]
}
}
}
}
}
}
위 analyzer 를 사용할때는 아래와 같이 사용합니다.
GET my_index3/_analyze
{
"analyzer": "my_custom_analyzer",
"text": [
"The quick brown fox jumps over the lazy dog"
]
}
사용자 정의 토큰필터
토크나이저, 토큰필터의 경우에도 옵션을 지정하는 경우에는 사용자 정의 토크나이저, 토큰필터로 만들어 추가해야 합니다. 다음은 stop 토큰필터에 "brown"을 불용어로 적용한 my_stop_filter 사용자 정의 토큰필터를 생성하고 이것을 my_custom_analyzer에서 사용하도록 설정 한 예제입니다.
아래 명령 실행 전에 기존 my_index3 인덱스는 먼저 삭제해야 합니다.
PUT my_index3
{
"settings": {
"index": {
"analysis": {
"analyzer": {
"my_custom_analyzer": {
"type": "custom",
"tokenizer": "whitespace",
"filter": [
"lowercase",
"my_stop_filter",
"snowball"
]
}
},
"filter": {
"my_stop_filter": {
"type": "stop",
"stopwords": [
"brown"
]
}
}
}
}
}
}
매핑에 사용자 정의 애널라이저 적용
애널라이저를 실제 인덱스에 입력할 데이터에 적용하려면 settings 부분에서 만든 애널라이저를 mappings 의 text 필드별로 지정합니다. 앞에서 만든 my_custom_analyzer 를 message 필드에 적용하는 방법은 다음과 같습니다. setting 부분은 위 예제와 동일합니다.
PUT my_index3
{
"settings": {
"index": {
"analysis": {
"analyzer": {
"my_custom_analyzer": {
"type": "custom",
"tokenizer": "whitespace",
"filter": [
"lowercase",
"my_stop_filter",
"snowball"
]
}
},
"filter": {
"my_stop_filter": {
"type": "stop",
"stopwords": [
"brown"
]
}
}
}
}
},
"mappings": {
"properties": {
"message": {
"type": "text",
"analyzer": "my_custom_analyzer"
}
}
}
}
값 저장
PUT my_index3/_doc/1
{
"message": "The quick brown fox jumps over the lazy dog"
}
검색
GET my_index3/_search
{
"query": {
"match": {
"message": "brown"
}
}
}
다른 검색 방법
GET my_index3/_termvectors/1?fields=message
# 아래와 같은 데이터를 넣었을때
PUT my_index3/_doc/1
{
"message": "The quick brown fox jumps over the lazy dog"
}
#Response
~~
"terms" : {
"dog" : {
"term_freq" : 1,
"tokens" : [
{
"position" : 8,
"start_offset" : 40,
"end_offset" : 43
}
]
}
...
position 은 0 부터 시작해서 dog 부분은 0 1 2 3 4 5 6 7 8 즉 8 번째
start_offset 은 byte 단위(1 2 3 4 .... )로 쪼개서 40번째 부터 end_offset 43 을 뜻합니다.
즉, dog 입니다.
참고
'ELK 스택' 카테고리의 다른 글
Elasticsearch - 인덱스 매핑과 데이터 타입 문자열, 숫자 (2) (0) | 2022.11.07 |
---|---|
Elasticsearch - 인덱스 매핑과 데이터 타입 문자열, 숫자 (1) (0) | 2022.11.07 |
Elasticsearch - 애널라이저 (Analyzer) (0) | 2022.11.07 |
Elasticsearch - 텍스트 분석 (Text Analysis) (0) | 2022.11.07 |
Elasticsearch - 역 인덱스 (Inverted index) (0) | 2022.11.07 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- mysql은 nl이 기본 세팅
- list
- 인덱스
- config
- Mappings
- Linux
- Mapping
- Elasticsearch
- kibana
- ArrayList
- 명령어
- ElasticSearach 백업
- 문자
- 키바나
- bool
- string
- EL
- Query
- literal sql
- React18
- GIT
- NextJS 14
- pm2-logrotate
- 재색인
- Java
- 절대 경로 설정하기
- react
- logstash
- index 처리를 잘하자
- InteiilJ
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함