Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- elasticsearch
- script
- Java
- CSS
- 엑셀
- JSP
- spring 오류
- 에러
- JavaScript
- Excel
- 도커
- jQuery
- 이클립스
- HTML
- spring form
- 형변환
- eclipse 설정
- 엘라스틱서치
- Eclipse
- db
- docker
- 자바 리스트
- 한글 깨짐
- java 오류
- 자바스크립트
- 쿼리
- 이클립스 설정
- 데이터베이스
- 자바
- tomcat
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' 카테고리의 다른 글
Script (0) | 2024.11.20 |
---|---|
대시보드에서 elasticsearch 명령어 확인 (0) | 2024.11.19 |
Elastic Stack ( ELK Stack ) (0) | 2024.11.13 |
[ElasticSearch] text와 keyword 타입 (0) | 2024.08.06 |
[ElasticSearch] 매핑(Mapping) (0) | 2024.07.12 |