BackEnd/Elasticsearch API
Alias & Reindex
hanseom
2025. 3. 15. 11:00
반응형
Elasticsearch에서 인덱스의 매핑은 변경할 수 없습니다. 이는 색인된 데이터가 특정한 구조와 형식으로 저장되기 때문입니다. 매핑을 변경하면 기존 데이터가 더이상 유효하지 않거나 잘못된 형식으로 해석될 수 있으므로, 매핑을 변경하려면 새로운 인덱스를 생성하고 데이터를 재색인해야 합니다.
Alias & Reindex
Alias는 인덱스의 매핑 변경 시 유용합니다. 새로운 인덱스를 생성하고 데이터를 재색인(Reindex)한 후, Alias를 업데이트하여 검색 요청을 새로운 인덱스로 전달할 수 있습니다. 이는 검색 서비스 중단 없이 인덱스를 관리하는 방법입니다. 또한, Alias는 여러 인덱스를 하나의 이름으로 통합하여 검색할 수 있게 합니다(Multi Index).
Alias 사용 방법
1. index를 생성하고 데이터를 넣은 후 Alias를 설정합니다.
# 기존 인덱스
PUT /old_index
{
"mappings": {
"properties": {
"product_id": {
"type": "integer"
}
}
}
}
# Insert Documents
POST /old_index/_doc/1
{
"product_id": 100
}
POST /old_index/_doc/2
{
"product_id": 200
}
# Alias 설정
POST /_aliases
{
"actions": [
{
"add": {
"index": "old_index",
"alias": "my_alias"
}
}
]
}
2. 매핑 변경이 필요한 경우, 새로운 인덱스를 생성하고 데이터를 재색인(Reindex) 합니다.
# 새로운 인덱스 생성
PUT /new_index
{
"mappings": {
"properties": {
"product_id": {
"type": "keyword"
}
}
}
}
# 데이터 재색인(Reindex)
POST /_reindex
{
"source": {
"index": "old_index"
},
"dest": {
"index": "new_index"
},
"script": {
"source": """
ctx._source.product_id = ctx._source.product_id.toString()
"""
}
}
3. 기존 Alias를 새로운 인덱스로 업데이트합니다.
POST _aliases {
"actions": [
{
"remove": {
"index": "old_index",
"alias": "my_alias"
}
},
{
"add": {
"index": "new_index",
"alias": "my_alias"
}
}
]
}
4. 검색 요청
GET /my_alias/_search
{
"query": {
"match_all": {}
}
}
[참고자료]
반응형