-
엘라스틱서치 업데이트 API [script]공부하기/엘라스틱서치 2024. 2. 26. 15:15
- 스크립트를 통해 문서 내용를 변경할 수 있다.
- defualt script : painless ( 엘라스틱 서치에서도 권장 )
- 기본적으로 자바 문법과 유사하다.
- 커스텀 플러그인을 통해 커스텀 스크립트도 사용할 수 있다.
- script.source
- ctx 변수를 통해 문서의 내용이나 메타데이터에 접근할 수 있다.
- script 필드와 doc 필드를 함께 요청하면 doc은 무시된다.
- 조회 API와 마찬가지로 routing과 refresh 옵션을 지정할 수 있다.
- 동일한 routing 값으로 지정하여 업데이트해야 의도한 대로 동작한다.
스크립트에서 접근할 수 있는 문맥
- params : 요청한 params로 제공한 매개변수의 Map이다 ( 읽기전용 )
- ctx._source : 저장된 문서의 _source를 Map 형태로 반환한다. ( 변경가능 )
- ctx.op : 작업의 종류를 String으로 나타낸다.
- 업데이트 요청의 ctx.op값은 기본적으로 "index"
- "index", "none", "delete" 3가지의 값을 갖을 수 있다.
- ctx._now : 현재 타임스탬프값을 밀리세컨드로 반환한다. ( 읽기전용 )
- 문서의 메타 데이터에 접근할 수 있는 ctx 변수 ( 모두 읽기전용 )
- ctx._index
- ctx._id
- ctx._type
- ctx._routing
- ctx._version
키바나를 사용하여 script 업데이트를 요청하는 경우 """ ~~ """ 와 같이 쌍따옴표 3개로 묶어서 스크립트를 요청할 수 있다.
단 이 기능은 키바나에 한정되어 직접 http 요청을 하는 경우에는 파싱 에러가 발생한다.
문법
POST 인덱스이름/_update/_id값 { "script": { "source": "업데이트 스크립트" "lang": "사용할 스크립트", default: painless "params": { ~~, source에서 수행되는 스크립트에 필요한 params } }, ... }
기본 실습
필드 추가 실습
필드 삭제 실습
upsert 실습
scripted_upsert 실습
- scripted_upsert : true
- upsert: {}가 반드시 필요
'공부하기 > 엘라스틱서치' 카테고리의 다른 글
엘라스틱서치 bluk api (4) 2024.02.27 엘라스틱서치 삭제 API (0) 2024.02.26 엘라스틱서치 업데이트 API [doc] ( detect_noop, doc_as_upsert ) (0) 2024.02.25 엘라스틱서치 조회 API (0) 2024.02.25 엘라스틱서치 색인 API ( PUT | POST ) (0) 2024.02.25