リリース

Elasticsearch 2.3.0および2.2.2をリリース

Lucene 5.5.0ベースのElasticsearch 2.3.0、ならびにLucene 5.4.1ベースのElasticsearch 2.2.2のリリースを本日発表いたします。この新しいリリースはいずれも、「Elasticsearch-as-a-service」プラットフォームであるElastic Cloudですでに利用可能です。今週はさらに、KibanaLogstashBeatsの新規バージョンのリリースも予定されています。

最新の安定リリース:

2.2の修正点:

Elasticsearch 2.3.0は、 Reindex APIUpdate By Query API、そしてTask Management APIというElasticsearchの歴史の中で最も待望されていた3つの機能を提供し、さらにはElasticsearch 5.0への対応に役立つDeprecation Loggingも提供されます。

Reindex API

Elasticsearchを使ったことがある人なら、再インデックスの機能が不可欠であることはお分かりだと思います。検索機能を向上させるためにフィールドマッピングやanalysisチェーンを改善するか、Elasticsearch 2.2.0に追加された新しいGeo-pointなどのデータ構造を利用できるように、古いデータのインデックスを再構築したい場合があります。理由は何であれ、インデックスの作り直し(再インデックス)は簡単にできなければなりません。再インデックスには、これまでscrollbulkAPIが使用されてきましたが、2.3.0では再インデックスがとても簡単にできるようになりました。

新しい_reindex APIでは、1つのコマンドですべてのドキュメントを古いインデックスから新しいインデックスに作り直すことができます。

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

ドキュメントは1つまたは複数のインデックスが元になっていたり、クエリに一致する一部のドキュメントに限定されていたりします。_id_typeのようなドキュメントメタデータにアクセスできるため、スクリプトを使用した再インデックスの過程でドキュメントが変わってしまうことがあります。

Elasticsearch 2.3.0には、Reindex APIの初代バージョンが含まれていますが、ダイナミックスロットリング、「即時」再インデックス、リモートクラスタからの再インデックスなど、今後の改善がすでに計画されています。

Update-by-Query API

Reindex APIを追加したことの嬉しい副産物は、update-by-query APIも得られたことです。update-by-query APIを使用すると、スクリプトを使用してクエリに一致するドキュメントをすべて更新することができます。マルチフィールドを追加した後、空のupdate-by-queryリクエストを使って、すでにインデックスにあるすべてのドキュメントのマルチフィールドの値を元のように入力することができます。

Reindex APIとupdate-by-query APIについての詳細は、Reindex is coming!(Reindexが登場!)をご覧ください。.

Task Management API

何テラバイトもあるデータを再インデックスするには長時間かかります。作業を始めてからミスしたことに気づいても、取り消しできないとなったら大変です。安全に再インデックスを実行できるように、長時間実行するタスクをモニターして、必要に応じてキャンセルできる方法を提供することが重要でした。

新しいTask Management APIを使用すると、進行中の再インデックスジョブのステータスを調べることができます。さらに、ジョブをキャンセルすることも可能です。長時間実行中のジョブについてのレポートを表示できるだけでなく、検索や、再インデックス要求、シャード割り当てなど、クラスタ全体で実行中のすべてのタスクの状況を知ることもできます。今後はスナップショットやリストア、Delete-by-queryなどの他の長時間実行タスクでも、タスク管理フレームワークを利用できるようになる予定です。

詳細はTask Management APIについてのドキュメントをご覧ください。

Deprecation Logging

今使っている機能が次のメジャーバージョンで廃止されてしまうかどうかを知るのは難しいことです。2.0では、フィルタとクエリを統合し、filtered queryや andorフィルタなどのクエリを廃止しましたが、これらのフィルタとクエリは2.xシリーズでも引き続き動作していました。5.0では、フィルタとクエリは他の廃止予定の機能と共に削除される予定です。

アプリケーションで廃止になったフィルタとクエリが使われていないかどうか調べるには、次のcluster-settings更新リクエストを使用してDeprecation Loggingをオンにします:

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

Elasticsearchでは、廃止された(そして代りとなる機能が追加された)機能の使用状況がすべて、logsディレクトリのelasticsearch_deprecation.logというファイルに記録されます。このロギングは、logger.deprecationを再びINFOに戻せばオフにできます。

まとめ

Elasticsearch 2.3.0をダウンロードして、使ってみてください。感想やご意見をTwitter (@elastic)または Elastissearchの フォーラムにお寄せください。何か問題を発見された場合は、 GitHub issues page(GitHub問題ページ)でご報告ください。