티스토리 뷰
인덱스 매핑 (Mapping)
- 동적 (dynamic) 매핑 생성
- PUT { maappings : {}} 정적 매핑 입력
문자열 타입
- text / keyword 타입 비교
- match / term 쿼리 비교
숫자 타입
- 정수 : byte, short, integer, long
- 실수 : float, double, half_float
자동 형변환 시 주의할점
- coerce: true 옵션으로 자동 형변환 방지
데이터 추가
PUT books/_doc/1
{
"title": "Romeo and Juliet",
"author": "William Shakespeare",
"category": "Tragedies",
"publish_date": "1562-12-01T00:00:00",
"pages": 125
}
데이터 조회
GET books
매핑만 확인할려면
GET books/_mapping
response 에서 mappings 은 데이터 베이스의 스키마 라고 생각해주시면 됩니다.
지정한거에따라 다양한 내용들이 생성이 됩니다.
{
"books" : {
"aliases" : { },
"mappings" : {
"properties" : {
"author" : {
"type" : "text",
"fields" : {
"keyword" : {
"type" : "keyword",
"ignore_above" : 256
}
}
},
"category" : {
"type" : "text",
"fields" : {
"keyword" : {
"type" : "keyword",
"ignore_above" : 256
}
}
},
"pages" : {
"type" : "long"
},
"publish_date" : {
"type" : "date"
},
"title" : {
"type" : "text",
"fields" : {
"keyword" : {
"type" : "keyword",
"ignore_above" : 256
}
}
}
}
},
"settings" : {
"index" : {
"creation_date" : "1667787721181",
"number_of_shards" : "1",
"number_of_replicas" : "1",
"uuid" : "_0UDxTQIRmiu3ym531sOhw",
"version" : {
"created" : "7100299"
},
"provided_name" : "books"
}
}
}
}
매핑은 자동으로 생성하기에는 너무 많은 데이터가 많기 때문에
자동으로 생성되기 전에 미리 먼저 인덱스 매핑을 정의 해 놓으면 정의 해 놓은 매핑에 맞춰 데이터가 입력됩니다.
필드를 추가하는건 가능하고 있는걸 바꾸는건 불가능합니다.
PUT books/_mapping
{
"properties" : {
"content" : {
"type" : "text"
}
}
}
추가가 가능합니다.
만약 아래와 같은 검색이 되었다 했을때
{
"books" : {
"aliases" : { },
"mappings" : {
"properties" : {
"author" : {
"type" : "text",
"fields" : {
"keyword" : {
"type" : "keyword",
"ignore_above" : 256
}
}
},
"category" : {
"type" : "text",
"fields" : {
"keyword" : {
"type" : "keyword",
"ignore_above" : 256
}
}
},
"pages" : {
"type" : "long"
},
"publish_date" : {
"type" : "date"
},
"title" : {
"type" : "text",
"fields" : {
"keyword" : {
"type" : "keyword",
"ignore_above" : 256
}
}
}
}
},
"settings" : {
"index" : {
"creation_date" : "1667787721181",
"number_of_shards" : "1",
"number_of_replicas" : "1",
"uuid" : "_0UDxTQIRmiu3ym531sOhw",
"version" : {
"created" : "7100299"
},
"provided_name" : "books"
}
}
}
}
title, title.keyowrd 두개로 검색이 가능합니다.
# 검색이 가능
GET books/_search
{
"query": {
"match": {
"title": "romeo"
}
}
}
# 정확한 값이 들어가야지 검색 가능
# Romeo and Juliet
GET books/_search
{
"query": {
"match": {
"title.keyword": "romeo"
}
}
}
keyword 는 어디서 필요하느냐?? 나중에 집계나 통계를 할때 주로 사용을 합니다.
참고
'ELK 스택' 카테고리의 다른 글
Elasticsearch - 인덱스 매핑과 데이터 타입 날짜, 객체, 위치정보 (1) (0) | 2022.11.07 |
---|---|
Elasticsearch - 인덱스 매핑과 데이터 타입 문자열, 숫자 (2) (0) | 2022.11.07 |
Elasticsearch - 사용자 정의 애널라이저 (Custom Analyzer) (0) | 2022.11.07 |
Elasticsearch - 애널라이저 (Analyzer) (0) | 2022.11.07 |
Elasticsearch - 텍스트 분석 (Text Analysis) (0) | 2022.11.07 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- Mapping
- 문자
- literal sql
- 명령어
- kibana
- Query
- config
- list
- 키바나
- 절대 경로 설정하기
- ArrayList
- Elasticsearch
- Java
- react
- GIT
- index 처리를 잘하자
- NextJS 14
- EL
- logstash
- React18
- bool
- string
- 재색인
- mysql은 nl이 기본 세팅
- Linux
- pm2-logrotate
- ElasticSearach 백업
- 인덱스
- Mappings
- 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 |
글 보관함