PUT blogs_test
{
"settings": {
"analysis": {
"char_filter": {
"my_filter": {
"type": "mapping",
"mappings": ["X-Pack => XPack"]
}
},
"analyzer": {
"my_content_analyzer": {
"type": "custom",
"tokenizer": "standard",
"filter": ["lowercase"],
"char_filter": ["my_filter"]
}
}
}
},
"mappings": {
"properties": {
"content": {
"type": "text",
"analyzer": "my_content_analyzer"
}
}
}
}
POST blogs_test/_analyze
{
"text": ["We love X-Pack"],
"analyzer": "my_content_analyzer"
}
POST blogs_test/_doc
{
"content": "We love X-Pack"
}
mapping에서 분석기 만들어놓고, 필드 타입이랑 분석기를 지정해 줬는데도 document를 넣으면 keyword랑 다를 바 없이 "We love X-Pack"가 그대로 저장되는 것을 확인
=> 우리한테 보여줄 때에는 그렇게 보이고, analysis는 내부적으로 실행되어 그 결과는 따로 가지고 있는 것!
그래서 어떻게 분석되는지 확인할 때 쓰는 것이 "_analyze" API
PUT 인덱스이름 # 아무것도 없는 빈 인덱스 생성
PUT 인덱스이름/_mapping # 빈 인덱스에 매핑 추가 가능
PUT 인덱스이름 # 위 두 번의 요청과 이 한 번의 요청은 동일한 결과
{
"mapping": {
...
}
}
새 인덱스로 reindex
POST _reindex
{
"source": {
"index": "원본 인덱스"
},
"dest": {
"index": "목표 인덱스"
}
}
인덱스 내 document 개수 확인
GET 인덱스이름/_count
HTML 태그 제거하는 char_filter
는 html_strip
query나 aggregation에 사용하지 않을 필드는 doc_values
를 false
로 해두면 저장공간을 절약할 수 있음
PUT 인덱스이름
{
"mappings": {
"properties": {
"필드명": {
"doc_values": false
}
}
}
}
실습 페이지 Lab 2.4의 1번 solution 결과로 _search
했을 때 search_tags
에 tags
의 모든 필드가 나오지 않는 점이 의문
=> document를 indexing할 때 설정하지 않은 필드는 결과에서도 보여주지 않기 때문
빈 배열로 나오는 필드는 빈 배열이 indexing할 때 값으로 있었던 것
"doc_values": false
와 "enabled": false
는 모두 query와 aggregation에 사용할 수 없음
=> 그럼 왜 두 개의 약속어가 존재하는지 의문
doc_values: false
enabled: false
(추가)
index: false