일래스틱서치의 색인의 별명이 유용할 때가 있다.
* 배치가 돌고 많은 데이터(랭킹 정보, 검색 정보)를 색인에 저장하면서, 색인 시간이 소요되는 경우에 유용하다.
(단순히 데이터를 일래스틱 서치에 저장하고 검색하는 경우에는 의미없을 수 없다.)
색인 별명(indices aliases)는 get, create, delete를 할 수 있다.
suggest_v1, suggest_v2 색인이 있는데, suggest_v2에 suggest라는 별명을 create한다.
$curl -XPOST 'http://abc.google.com:9200/_aliases' -d '
{
"actions" : [
{ "add" : { "index" : "suggest_v2", "alias" : "suggest" } }
]
}'
애플리케이션 입장에서 suggest 색인을 볼 경우, 별명이 가르키고 있는 suggest_v2 색인을 바라보게 된다.
$ curl -XGET 'http://abc.google.com:9200/_alias/suggest?pretty=true'
{
"suggest_v2" : {
"aliases" : {
"suggest" : { }
}
}
}
배치 프로그램에서 suggest_v1 색인 데이터를 교체하고 v1 색인을 suggest에 추가한다.
$curl -XPOST 'http://abc.google.com:9200/_aliases' -d '
{
"actions" : [
{ "add" : { "index" : "suggest_v1", "alias" : "suggest" } }
]
}'
그러면, 다음과 같이 suggest 색인에는 suggest_v1, suggest_v2 색인이 하나로 묶이게 된다.
$ curl -XGET 'http://abc.google.com:9200/_alias/suggest?pretty=true'
{
"suggest_v1" : {
"aliases" : {
"suggest" : { }
}
},
"suggest_v2" : {
"aliases" : {
"suggest" : { }
}
}
}
그리고, 바로 suggest_v2 색인을 제거하면, 애플리케이션 장애 없이 잘 동작하게 할 수 있다.
(트래픽이 많은 경우 아주 잠깐의 데이터 누락처럼 보일 수 있겠지만.. ;;; 서비스 에러는 발생하지 않을 것이다.)
$ curl -XPOST 'http://abc.google.com:9200/_aliases' -d '
{
"actions" : [
{ "remove" : { "index" : "suggest_v2", "alias" : "suggest" } }
]
}'
$ curl -XGET 'http://abc.google.com:9200/_alias/suggest?pretty=true'
{
"suggest_v1" : {
"aliases" : {
"suggest" : { }
}
}
}