일래스틱서치의 색인의 별명이 유용할 때가 있다.


* 배치가 돌고 많은 데이터(랭킹 정보, 검색 정보)를 색인에 저장하면서, 색인 시간이 소요되는 경우에 유용하다.

(단순히 데이터를 일래스틱 서치에 저장하고 검색하는 경우에는 의미없을 수 없다.)



색인 별명(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" : { }
    }
  }
}


출처 :

https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-aliases.html




Posted by '김용환'
,