30 3월 2016 출시

Elasticsearch 2.3.0 및 2.2.2 출시

By Clinton Gormley

Elasticsearch 2.3.0(Lucene 5.5.0기반)릴리스, Elasticsearch 2.2.2의 버그 수정 릴리스(Lucene 5.4.1기반)가 출시되었습니다.이들 새 릴리스는 Elasticsearch 서비스형 플랫폼 Elastic Cloud를 통해 이미 제공되고 있습니다. 또한 이번 주에는 최신 버전의Kibana, Logstash, 및 Beats도 출시되었습니다.

안정적인 최신 릴리스

2.2의 버그 수정:

Elasticsearch 2.3.0에서는 Elasticsearch에서 가장 많이 필요로 한 세 가지 기능인 reindex API, update-by-query API, task management API 가 포함되었습니다. Elasticsearch 5.0을 준비할 때 도움이 될 사용 중단 로그(deprecation logging) 기능도 함께 제공됩니다.

Reindex API

Elasticsearch에서 잠시라도 일해본 사람이라면 데이터 재인덱싱이 필수적인 기능이라는 것을 압니다. 더 좋은 검색 결과를 얻기 위해서는 field mappings 또는 분석 체인을 개선하거나 Elasticsearch 2.2.0에서 이용 가능한 새로운 위치와 같이 개선된 데이터 구조를 활용하기 위해 기존의 데이터를 재인덱싱해야 할 수 있습니다. 그 이유가 무엇이든지간에 데이터 재인덱싱은 쉬워야 합니다. scrollbulk APIs로는 오래 전부터 가능했지만 2.3.0으로 더욱 사용이 쉬어졌습니다.

새로운 _reindex API 는 하나의 명령으로 모든 도큐먼트를 인덱스를 다시 작성합니다.

POST _reindex
{
  "source": {
    "index": "my_old_index"
  },
  "dest": {
    "index": "my_new_index"
  }
}
        

도큐먼트는 하나 이상의 인덱스로 구성될 수 있으며 쿼리가 일치하는 하위 집합의 도큐먼트로 제한될 수도 있습니다. _id_type과 같은 도큐먼트 메타데이터를 이용한 스크립트를 사용해서 도큐먼트의 변환이 가능합니다.

Elasticsearch 2.3.0에는 최초의 reindex API 버전만이 포함되었지만, 동적 쓰로틀링, reindex-in-place, 원격 cluster로부터 재인덱싱 등과 같은 더 많은 개선사항에 대한 계획들이 준비되어 있습니다.

Update-by-Query API

reindex API 추가의 장점은 update-by-query API를 무료로 이용할 수 있다는 점입니다. update-by-query API 는 스크립트를 사용하는 쿼리와 일치하는 모든 도큐먼트를 업데이트할 수 있게 해줍니다. 다중 필드를 추가한 후 빈 update-by-query 요청을 사용하면 인덱스 내의 모든 도큐먼트에 대한 다중 필드에 값을 다시 입력할 수 있습니다.

reindex 및 update-by-query API에 관한 자세한 내용은 Reindex is coming!에서 확인하실 수 있습니다.

Task Management API

테라바이트의 데이터를 재인덱싱하려면 많은 시간이 들 수 있습니다. 재인덱싱 작업을 시작한 후에 실수를 알아채거나 취소할 수 없게 되버리는 일은 원치 않으실 겁니다. 재인덱싱을 안전하게 실행하기 위해서는 오래 걸리는 작업을 모니터링하고 취소할 수 있는 방법을 아는 것이 중요합니다.

새로운 작업 관리 API로 진행 중인 재인덱싱 작업의 상태를 가져오고 취소할 수도 있습니다. 검색, 인덱싱 요청, 샤드 할당 기능은 물론 오래 실행되는 작업을 보고할 뿐 아니라, cluster에서 실행 중인 모든 작업을 보고합니다. 앞으로는 스냅샷, 복구, delete-by-query와 같이 작업 관리 프레임워크의 장점을 활용할 수 있는 오래 실행되는 작업으로 범위를 더욱 확대해 나갈 것입니다.

자세한 내용은 Task Management API documentation에서 확인하실 수 있습니다.

사용중단 로그(Deprecation Logging)

현재 사용 중인 사용 중단 기능이 다음 중요 버전에서 없어질 것인지는 단언할 수 없습니다. 2.0에서 우리는 필터를  filtered ,  and  그리고  or  와 같은 쿼리 그리고 사용 중단된 쿼리들와 병합하였습니다. 그러나 이러한 구조는 2.x 시리즈 내내 사용되어 왔습니다. 이 구조는 5.0에서 다른 사용 중단 기능과 함께 삭제될 예정입니다.

애플리케이션에서 사용 중단된(deprecated) 기능을 사용 중인지 여부를 확인하려면 다음 cluster-settings-update 요청을 통해 사용 중단 logging을 확인하십시오:

PUT _cluster/settings
{
  "transient": {
    "logger.deprecation": "DEBUG"
  }
}
        

Elasticsearch는 사용 중단 기능의 모든 사용 현황을 로그 디렉토리의elasticsearch_deprecation.log 파일에 기록합니다. 로그 기록은 INFO로 돌아간 후 logger.deprecation 설정을 통해 다시 비활성화할 수 있습니다.

결론

Elasticsearch 2.3.0을 다운로드하여 사용해 보시고 당사 트위터 (@elastic) 또는 포럼에 의견을 남겨주시기 바랍니다. 발견되는 문제는 GitHub 문제점 페이지에 보고하실 수 있습니다.