0. DSL
DSL이란 Domain Specific Language으로 JSON에 기반한 질의이다. ES에서의 DSL은 데이터베이스의 SQL문과 동일하다고 이해하면 된다. 즉, 사용자가 원하는 데이터를 추출하기 위한 질의 언어이다.
URL 주소 뒤에 한 줄로 이어붙여서 쿼리문을 작성하는 쿼리 스트링보다
REST API 요청 본문 안에 JSON 형태로 쿼리를 작성하는 DSL이 가독성이 더 좋다.
-> URL로 요청하는 쿼리문은 보통 간단하게 테스트용으로 자주 쓰인다.
좌측 메뉴 > Management > Dev Tools > Console에서 쿼리 DSL 실행 가능
1. 기본 쿼리
기본적으로 백엔드 API 개발할 때 사용하는 method와 유사하지만 기능은 조금 다르다.
GET은 REST method 처럼 무언가를 조회하는 역할이다.
POST는 무언가를 수정하는 역할이다.
PUT은 무언가를 생성하는 역할을 한다.
클러스터 설정값 확인 쿼리
GET _cluster/settings?include_defaults=true
노드 설정값 확인 쿼리
GET _nodes/settings
인덱스 세팅, 매핑 정보 확인 쿼리
GET 인덱스명/_settings
GET 인덱스명/_mapping
인덱스 닫기, 열기 쿼리
POST 인덱스명/_close
POST 인덱스명/_open
인덱스 설정 수정하기 원할 때, 인덱스 읽기/쓰기가 가능하게 open해주고 변경사항이 끝났다면 close한다.
샤드 수 지정하여 Index 생성 쿼리
PUT 인덱스명
{
"settings": {
"number_of_shards": 3, # 3개의 프라이머리 샤드
"number_of_replicas": 2 # 3x2 = 6개의 레플리카 샤드
}
}
Index 리스트 확인 쿼리
GET _cat/indices
index 확인 쿼리
GET 인덱스명
Index 삭제 쿼리
DELETE 인덱스명
Index에 document insert 쿼리
PUT 인덱스명/_doc/인덱스ID
{
"필드명1": "데이터",
"필드명2": "데이터2"
}
Index 리인덱싱 쿼리
POST _reindex
{
"source": {
"index": "기존인덱스명"
},
"dest": {
"index": "신규인덱스명"
}
}
리인덱싱 쿼리는 기존 인덱스의 도큐먼트들을 신규 인덱스의 세팅, 매핑에 적용하며 복사하는 쿼리이다.
인덱스 세팅, 매핑 정보 변경 시
1. 새로운 세팅, 매핑으로 기존 인덱스명에 적용될 인덱스 템플릿을 만든다.
2. temp 인덱스로 리인덱싱한다.
3. 기존 인덱스 삭제 후 기존 인덱스명으로 다시 리인덱싱 한다.
4. temp 인덱스를 삭제한다.
'데이터베이스 > ELK' 카테고리의 다른 글
[ELK] Elasticsearch 한글 형태소 분석기 nori tokenizer (0) | 2022.12.21 |
---|---|
[ELK] Elasticsearch DSL 검색 쿼리 문법 (1) | 2022.12.20 |
프로젝트에서 엘라스틱서치에 적재된 로그 문제점 및 개선 사항 (0) | 2022.12.18 |
Elastic APM을 이용한 FastAPI 모니터링 연동 (0) | 2022.11.27 |
Elastic APM을 이용한 Django 모니터링 연동 (0) | 2022.11.10 |