일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 한글 깨짐
- 형변환
- jQuery
- Eclipse
- Excel
- 자바
- 엘라스틱서치
- spring 오류
- 이클립스
- 이클립스 설정
- tomcat
- 쿼리
- 에러
- java 오류
- db
- 도커
- 데이터베이스
- Java
- 인텔리제이
- spring form
- HTML
- elasticsearch
- 자바스크립트
- JSP
- CSS
- eclipse 설정
- JavaScript
- 엑셀
- 자바 리스트
- docker
Archives
- Today
- Total
개발노트
script 와 doc 차이 본문
반응형
1. doc
- 기능: 특정 필드의 값을 지정된 값으로 대체합니다.
- 용도: 문서에서 일부 필드를 수정하거나 추가할 때 사용합니다.
- 작동 방식:
- 요청에 지정된 필드만 변경됩니다.
- 지정되지 않은 필드는 유지됩니다.
- doc은 간단한 값을 업데이트할 때 적합합니다.
POST /my_index/_update/15
{
"doc": {
"author" : "John Doe"
},
"upsert": {
"title" : "Elasticsearch Basics",
"author" : "Jane Doe",
"publish_date" : "2024-05-09",
"tags" : ["search", "analytics"]
}
}
- 기존 문서에서 author 필드만 "John Doe"로 수정됩니다.
- 기존 데이터에서 다른 필드는 변경되지 않습니다.
2. script
- 기능: 특정 필드를 계산적으로 업데이트하거나, 복잡한 로직을 수행할 수 있습니다.
- 용도: 값의 계산, 조건부 업데이트, 동적 필드 추가 등에 사용합니다.
- 작동 방식:
- script는 Java-like 스크립트 언어인 Painless를 사용하여 로직을 정의합니다.
- 기존 값을 기준으로 동적 변경이 가능합니다.
POST /my_index/_update/16
{
"script": {
"source": "ctx._source.price++"
},
"upsert": {
"title" : "Elasticsearch Basics",
"author" : "Jane Doe",
"publish_date" : "2024-05-09",
"price" : 100,
"tags" : ["search", "analytics"]
}
}
- price 필드가 이미 존재한다면, 해당 값을 1 증가시킵니다.
- price 필드가 없거나 문서가 존재하지 않는다면, upsert 데이터가 삽입됩니다.
3. 주요 차이점
특징 | doc | script |
동작 방식 | 지정된 값으로 필드를 대체 | 기존 데이터를 기반으로 계산하거나 조건부 업데이트 수행 |
용도 | 단순 필드 업데이트, 추가 | 계산, 조건부 업데이트, 복잡한 로직 |
유연성 | 제한적 (고정된 값만 지정 가능) | 매우 유연함 (스크립트를 통해 복잡한 연산 가능) |
성능 | 비교적 빠름 | 스크립트 실행 비용이 있어 조금 더 느릴 수 있음 |
예시 | "author": "John Doe"처럼 값 대체 | "price++", 조건부 업데이트 등 동적 작업 |
4. 주의사항
- doc
- 단순한 업데이트에 적합하며, 데이터를 덮어씌우므로 잘못된 값으로 대체되지 않도록 주의해야 합니다.
- script
- 계산 로직이 복잡하거나 자주 실행되는 경우 성능에 영향을 줄 수 있습니다.
- script 사용 시 보안 문제(예: 악성 스크립트)나 리소스 소비를 고려해야 합니다.
정리
단순 업데이트는 doc,
동적/계산적 업데이트는 script를 사용
반응형
'Programming > ElasticSearch' 카테고리의 다른 글
Upsert (0) | 2024.11.21 |
---|---|
Script (1) | 2024.11.20 |
대시보드에서 elasticsearch 명령어 확인 (0) | 2024.11.19 |
Elastic Stack ( ELK Stack ) (0) | 2024.11.13 |
[ElasticSearch] text와 keyword 타입 (0) | 2024.08.06 |