Elasticsearch 2.0.0リリース(日本語訳)

※この記事は次のブログを翻訳したものになります。

原文:Elasticsearch 2.0.0 GA released

Elasticsearch 1.0.0のリリース以降、 477のコミッター2,799のpull requestがあった、 Elasticsearch 2.0.0 GA(Lucene 5.2.1ベース)をリリースしました。

それだけでなく、Shield(セキュリティプラグイン)とWatcher(アラーティングプラグイン)、 新しくなった Marvel(モニタリングプラグイン)(プロダクション環境でフリー!)、 また、新しくオープンソースとなった Sense editorの2.0.0もリリースしました。

Elasticsearch 2.0.0のダウンロードはこちらから。 また、 2.0.0での重要な変更点についてはこちらをご覧ください。 全ての変更点については、次をご覧ください。

商用プラグインについてはこちらです。

Elasticsearchの新機能

Elasticsearch 2.0.0には素晴らしい新機能があります。

Pipeline Aggregations

Aggregationsで導関数や移動平均のような他のAggregationの結果に対する計算が可能となります。 この機能はクライアントサイドで実装しなければなりませんでしたが、 Elasticsearchに計算させることで、より強力な解析のクエリを簡単に組み立て、クライアントのコードを簡略化できます。 これは、予測解析や予測解析や例外検知といった可能性をもたらします。 Pipeline Aggregationについては次をご覧ください。

Query/Filter merging

フィルタはもうありません。 全てのフィルタ条件はクエリとなりました。 クエリコンテキストで使用した場合、関連度のスコアに影響し、フィルタコンテキストで使用した場合、 これまでのフィルタのように、ヒットしなかったドキュメントを除外するだけとなります。 この変更はクエリの実行時に自動的に最も効率的な順序で実行するように最適化されることを意味します。 例えば、遅いクエリ(フレーズやgeo)の最初の実行は速い近似フェーズで実行され、 それから、遅い正確なフェーズで結果を修正します。 フィルタコンテキストでは、直近でよく使われた条件が自動的にキャッシュされます。 詳細については、” Better query execution coming to Elasticsearch 2.0“をご覧ください。

設定可能な圧縮率

_sourceのようなStored fieldsは高速なLZ4(デフォルト)で圧縮するか、インデックスサイズを小さくできるDEFLATE で圧縮できます。 これは、特にロギングのケースで便利です。 古いインデックスをオプティマイズする前に best_compressionに変更することができます。 詳細については” Store compression in Lucene and Elasticsearch“をご覧ください。

堅牢に

新しいElasticsearchはJava Security Managerの元で実行されます。 これは、セキュリティの観点で大きな前進です。 Seciruty ManagerはElastcsearchにより制限をかけ、ハッカーによりシステムに対して何でもできるようなものを制限します。 Elasticsearchはまた、インデキシングの観点でも堅牢になっています。

  • ドキュメントはインデキシングリクエストに答える前に、耐久性のためにディスクにfsyncされます。
  • すべてのファイルはチェックサムにより、早期に障害を検知します。
  • すべてのファイルはどんなファイルへの書き込みもアトミックです

最後に、システム管理者から要請の多かった変更として、 設定されて居ないノードがパブリックなネットワークから参加しないようになりました。 Elasticsearchは デフォルトではローカルホストのみにバインドします。マルチキャストは無くなりました。(プラグインとして残っています。)

パフォーマンスと信頼性

上記以外にも細かな修正がElasticsearchとLuceneにはあります。 より安定し、信頼性をあげ、簡単に設定できるようにするものです。例えば、次のようなものです。

  • ヒープの使用率の低減(doc valuesがデフォルト、マージ時のメモリ使用率の削減、 roaring bitsetsによるフィルタキャッシュ)
  • 構造化され読みやすくなった例外
  • 設定の代わりに、フィードバックループを使用した自動調整
  • 安全で明確で信頼性のあるタイプマッピングの大きな修正
  • クラスタ状態の差分変更による伝搬の高速化および、大きなクラスタでのより安定的に
  • normsの圧縮の改善。これまではヒープスペースを大きく利用していた。
  • マージの自動的な調整(不可解な設定の微調整が必要ない)
  • より詳細なLuceneのメモリリポート
  • 最適化されたクエリ実行を活用するためにParent/childを書き換え

コアプラグイン

公式にサポートされたコアプラグインはElasticsearchと同じバージョン番号で同じタイミングでリリースされます。 インストールするプラグインとElasticsearchの複雑なバージョンの対応表に悩まされる必要はもうありません。 コアプラグインのインストールは次のように簡略化されています。

bin/plugin install analysis-icu
        

ShieldとWatcherの新機能

商用プラグインも新しい機能をリリースしました。

Shield

  • フィールドおよびドキュメントレベルのアクセス制御
  • ユーザのなりすまし
  • カスタム拡張可能な認証レルム

Watcher

  • 個別のWatchを有効/無効に
  • SlackやHipChatへの通知

これらの詳細については“Shield, Watcher, and Marvel 2.0.0 GA Released”をご覧ください。

コアプラグイン同様、商用プラグインもElasticsearchのバージョンと同じものが同時にリリースされます。 インストールは次の通りです。

bin/plugin install license
bin/plugin install shield
bin/plugin install watcher
        

Marvel 2.0.0はプロダクションでの利用もフリーに

Marvelモニタリングプラグインはカスタマに非常に価値のあるもので、 ユーザの発展とともに問題を診断したり見つけたりするのに役に立ってきました。 私たちは、何を改善でき、Marvelを一から書き直すことで、いろいろとわかったことがあります。

  • Marvel UIを新しいKibanaプラットフォーム上に構築
  • ダッシュボードにはより簡単に問題を発見するために、最も重要なメトリックを可視化
  • 1つのインストールで、複数のクラスタのモニタリングをサポート(商用サポート対象)

一番良い点はMarvelがすべてのElasticsearchユーザに対してプロダクション環境でフリーになったことです! ライセンスが必要ですが、課金の必要はありません。 もし、マルチクラスタモニタリングサポートが必要な場合、それは商用サポート対象となります。

詳細に関しては“Shield, Watcher, and Marvel 2.0.0 GA Released”をご覧ください。

Sense editorがオープンソースに

Sense(ブラウザベースのElasticsearchリクエストとDSL向けのエディタ)を Kibanaプラットフォームのアプリとして、オープンソースにしました。 また、このリリースで新しい機能が追加されています。

  • 複数のcURLリクエストをペースとすると、Sense表記に変更
  • 複数のSenseリクエストをcURL表記にしてコピー
  • 複数のリクエストを一度に実行可能
  • Elasticsearch 2.0サポートとなった自動補完機能

SenseはKibanaのアプリとして次のようにインストールします。

./bin/kibana plugin --install elastic/sense
        

Senseの詳細については、”The Story of Sense - Announcing Sense 2.0.0-beta1“をご覧ください。

Elasticsearch Migration Plugin

Elasticsearch Migration PluginはElasticsearch 1.xから2.0にアップグレードする時の良い出発点となります。 1.xのElasticsearchクラスタにサイトプラグインとしてインストールすると、 アップグレードする前に解決すべき問題があるかどうかを検知してくれます。 (例えば、Lucene 3のような古いインデックスや、2.0.0にした場合に動作しない問題のある マッピング( The Great Mapping Refactoring)のような問題)

プラグインに関してElasticsearch Migration repositoryをご覧ください。

まとめ

ぜひ、Elasticsearch 2.0.0をダウンロードして、試してみてください。 そして、感想をTwitter( @elastic)やWebフォーラムなどで教えて下さい。 また、問題がありましたら、 GitHub issues pageで報告をお願いします。