elasticsearch
[elasticsearch] 특정 조건에 해당하는 document들 일괄 업데이트(update_by_query)
lim
2023. 2. 8. 21:57
반응형
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들을 일괄적으로 수정할때 유용하다.
반응형