Elasticsearch 에서 data stream에서 다른 data stream으로 데이터를 옮기면서 타임스탬프 값을 증가 해야할 일이 있었습니다. (정확하게는 하나의 data stream에 속하는 index에서 다른 data stream에 속한 index로 옮기는 작업이 였습니다.)
POST _reindex
{
"source": {
"index": "src-index-name",
"query": {
"range": {
"@timestamp": {
"lt": "2023-04-10"
}
}
}
},
"dest": {
"index": "dest-index-name",
"op_type": "create"
},
"script": {
"lang": "painless",
"source":
"""
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss");
ctx._source['@timestamp'] = LocalDateTime.parse(ctx._source['@timestamp'], dtf).plusHours(9).format(dtf);
"""
}
}
painless script가 jvm 기반이라 자바랑 비슷해서 이해하기는 어렵지 않은데 뭔가 ..
추가로 source의 src-index-name은 data stream도 사용가능 합니다.
확인이 필요한 점
- 해당 방법으로 reindex 할 경우 자동 rollover가 안되는 것으로 알고 있는데 해당 지식이 맞는 지 테스트가 필요합니다. rollover가 안될 경우 하나의 인덱스에 설정한 ilm 에 보다 많은 양의 데이터가 들어갈 수 있기 때문에 쿼리의 속도가 늦어질 수 있음
'공부 > 기록' 카테고리의 다른 글
DB Fragmentation 공부 기록 (0) | 2023.03.27 |
---|---|
DataGrip에서 SSH tunnel 사용하기 (0) | 2021.09.14 |
oracle database 11g Release 2 다운로드 방법 (1) | 2021.08.25 |
코딩 테스트 대비 연습 사이트 목록 (0) | 2021.06.10 |
vscode python 확장프로그램 추천 (2) | 2020.12.29 |
댓글