こんにちは、アクロクエストテクノロジー株式会社でElastic Stackのコンサルティング業務を担当している吉岡です。
本記事は、Elastic Stack (Elasticsearch) Advent Calendar 2022 の5日目の内容になります。
■Elastic Stackリリース概要
- Elastic Stack Version 7.17.0リリース(2022年2月)
- Elastic Stack Version 8.0.0リリース(2022年2月)
- Elastic Stack Version 8.1.0リリース(2022年3月)
- Elastic Stack Version 8.2.0リリース(2022年5月)
- Elastic Stack Version 8.3.0リリース(2022年6月)
- Elastic Stack Version 8.4.0リリース(2022年8月)
- Elastic Stack Version 8.5.0リリース(2022年11月)
2022年1月時点での最新バージョンはVer.7.16.2、2022年12月5日時点での最新版はVer.8.5.2です。
待ちに待ったVer.8のリリースです。Ver.7.0.0がリリースされたのが2019年4月ですので、約3年振りのメジャーバージョンアップ!Ver.8.0.0リリース後、マイナーバージョンが5回上がっていますが、マイナーチェンジとは思えない多くの機能が盛り込まれています。
本ブログでは、Enterprise Search、Observablility、Elastic Security、3つのソリューションのコアとなる「Elastic Search Platform」の進化について紹介していきます。
■Elastic Search Platformとは
Elasticsearch、Kibana、Logstash、Beatsとう主要プロダクト群を以前はElastic Stackと呼んでいましたが、Ver.8.0あたりからElasticsearch、Kibana、Integrations(Logstash/Beats/Elastic Agent)という分け方になり、総称が「Elastic Search Platform」となりました。Elastic Stackと同様の意味に捉えてもらえればと思います。
Elastic Search Platformをまとめるとこのような感じです。
■Ver.7.17.0における進化ポイント
パフォーマンスの向上
- インデックス設定の重複排除
- Ver.7.16以前では、インデックスのSetting/Mapping情報は各インデックスに紐づいていたため、Setting/Mappingが全く同一だとしても、重複した情報全てをヒープに保持する非効率な仕様でした。特に、日/週/月などの単位でインデックスを集約する時系列データでは、インデックスが増加するほど、Setting/Mapping重複によるヒープ逼迫の影響が大きくなります。
- Ver.7.17.0では、複数のインデックスに使用される同一のSetting/Mappingが1セットに削減されます。Elastic社の公式発表によると、Auditbeatのインデックスが10,000個あるとき、7.16以前ではヒープを約500MB消費するのに対して、Ver.7.17.0ではヒープ使用量が1MB(約500分の1)になるそうです。ノード間通信の量も削減されるため、クラスタのパフォーマンス向上につながります。
■Ver.8.0.0~Ver.8.5.0における進化ポイント
パフォーマンスの向上
- インデックスサイズ
- 圧縮率向上によりインデックスサイズが縮小(8.0.0)
- 時系列メトリック データに最適な「時系列データ ストリーム (TSDS) 機能」がリリース。インデックスサイズを約30%削減(8.5.0)
- ストレージサイズ
- Doc value only field:ストレージサイズを20%以上削減(8.1.0)
- インデクシング性能
- ジオポイントのインデクシング性能が10~15%高速化(8.0.0)
- Doc value only field:インデクシング性能を20%以上向上(8.1.0)
- 検索性能
- Range Queryのレイテンシーが20%高速化(8.2.0)
- ヒープ使用量
- リソース使用量を大幅に削減、データノードが保持可能なインデックス数が増加(8.3.0)
Ver.8.0.0以降、インデックスサイズ/ヒープ/ストレージの効率化に関する機能強化が多く、結果としてVer.7.Xと8.3以降で、10倍以上のシャードを保持できるようになっています。ぜひVer.8.3以降を使いましょう。
可視化/Kibana UI
- Discover
- フィールド統計機能が追加(8.0.0)
- フィールド統計機能ジオデータに対応(8.2.0)
- Lens
- Maps
- Shapeファイルのアップロード機能を追加(8.1.0)
- GeoServer不要でカスタムマップを利用可能に(8.1.0)
- Dashboard
- コントロール専用エリアが追加(8.3.0)
- タイムスライダー機能が追加(8.5.0)
- その他
- フリートパッケージマネージャーから機械学習モデルやSecurityパッケージがインストール可能に(8.0.0)
Discoverが機能強化で使いやすくなりました。最初にフィールドの統計分析からデータ傾向を掴み、KQLを使ってドキュメント抽出/調査、その後必要に応じて異常値検知用のアラートを作成。このようなデータの基礎調査作業がDashboardを作ることなく可能です。
Search/ML/NLP
- Search
- 近似最近傍(ANN)検索機能(8.0.0)
- ML管理機能
- NLP
- PyTorchモデルのインポートが可能に(8.0.0)
- Fill-mask、固有表現抽出、テキスト分類、Embeddingに対応(8.0.0)
- 質問応答(Question-Answering)に対応(8.3.0)
PyTorchモデルのインポートが可能になったことで、Elasticsearch単体で様々なデータ分析ができるようになりました。今後も様々なNLPタスクがサポートされるはずです。非常に楽しみですね。
ちなみに、現時点でのElasticsearchにおけるNLPの変遷をまとめると以下のようになります。
ログ分析/監視
- Kibana Alert
- スヌーズ機能が追加(8.2.0)
- Discoverからアラートルールを作成可能に(8.3.0)
- データのエンリッチ
- Lookup Runtime Fieldのサポート(8.2.0)
- クエリのタイミングでデータ結合が可能(リアルタイムエンリッチ)
- Enrich Processorとルックアップデータ更新に対する追従が容易
- AIOps
- ログパターン解析機能が追加(8.5.0)
- Log Rate Spike原因調査機能が追加(8.5.0)
これまで、Elasticsearch上でデータのエンリッチを行うにはEnrich Processorの一択でした。Enrich Processorはルックアップ先が固定の場合は向いていますが、頻繁にルックアップデータが更新されるようなユースケースでは、再ルックアップ(Update by Query + Pipeline指定)が必要で使い勝手が良くありません。その課題を解決するのが、Ver.8.2.0でリリースされたLookup Runtime Fieldです。Lookup Runtime Fieldはクエリタイムジョインなので、常に最新のルックアップデータをエンリッチ可能です。柔軟な可視化を行うのに非常に便利です。
まとめ
2022年のElastic Search Platformを振り返って、特徴的な機能強化/新機能をピックアップしてみましたが、その中でも、NLP関連の進化が個人的に興味深いですね。Ver.8.0以降、BERTなどのPyTorch機械学習モデルをElasticsearchでダイレクトに使用したり、モデルを使った推論をElasticsearch内でネイティブに実行することができるようになり、データのエンリッチや検索の幅が大きく広がっています。来年も目が離せませんね。
Acroquest Technologyでは、キャリア採用を行っています。
- ディープラーニング等を使った自然言語/画像/音声/動画解析の研究開発
- Elasticsearch等を使ったデータ収集/分析/可視化
- マイクロサービス、DevOps、最新のOSSを利用する開発プロジェクト
- 書籍・雑誌等の執筆や、社内外での技術の発信・共有によるエンジニアとしての成長
少しでも上記に興味を持たれた方は、是非以下のページをご覧ください。【データ分析】
Kaggle Grandmasterと一緒に働きたエンジニアWanted! - Acroquest Technology株式会社のデータサイエンティストの採用 - Wantedlywww.wantedly.com