반응형
elaticsearch에서 특정 조건에 해당하는 document들을 모두 업데이트하고 싶다면 update_by_query를 사용하면 된다. 예제를 통해서 어떻게 하는지 알아보자.
아래 명령어는 Kibana DevTools를 기준으로 작성했다.
1) 먼저 특정 조건에 해당하는 document들 확인
# document field 등 disk 사이즈가 0보다 작은 document들이 있는지 먼저 탐색해본다.
GET test-resource/_search
{
"query": {
"range" : {
"disk" : {
"lt" : 0
}
}
}
}
먼저 _search API를 통해서 disk가 0보다 작은 아이들을 찾는다.
disk값이 0보다 작을 수는 없으므로 잘못된 정보다.
이를 일괄 0으로 수정해보자.
2) update_by_query를 통해 일괄 업데이트
POST test-resource/_update_by_query
{
"script": {
"source": "ctx._source.disk = 0",
"lang": "painless"
},
"query": {
"range" : {
"disk" : {
"lt" : 0
}
}
}
}
script 안에서 painless 명령어를 통해 disk필드 값을 0으로 변경한다.
즉 disk값이 0 미만인 document들을 모두 0 값으로 맞춘다.
update_by_query를 하면 특정조건에 맞는 document들을 일괄적으로 수정할때 유용하다.
반응형
'elasticsearch' 카테고리의 다른 글
[elasticsearch] 와일드 카드에 매칭되는 인덱스 리스트 가져오기 (0) | 2022.04.17 |
---|---|
[elasticsearch] [circuit_breaking_exception] [parent] Data too large, data for [<http_request>] 오류 해결법 (0) | 2022.03.25 |
[elasticsearch] 노드별 디스크 사용량 확인 쿼리 (0) | 2022.03.25 |
[elasticsearch] 시간순서대로 가장 최근 document 가져오는 쿼리 (0) | 2021.10.12 |
[elasticsearch] document의 특정 필드값 수정하기 - POST API/python (0) | 2021.06.26 |