DUICUO

Elastic 8は3年ぶりに正式にリリースされました。

Elasticsearchは、Luceneライブラリをベースに構築された検索エンジンです。分散型、マルチテナント型の全文検索エンジンで、HTTPウェブインターフェースとスキーマレスなJSONドキュメントをサポートしています。ElasticsearchはJavaで開発され、SSPL+Elasticライセンスの下でオープンソースソフトウェアとしてリリースされています。公式クライアントは、Java、.NET(C#)、PHP、Python、Apache Groovy、Rubyなど、多くの言語で利用可能です。

約 3 年後、Elasticsearch 8 が正式にリリースされ、次のような新機能が追加されました。

7.x REST API 互換性

Elasticsearch 8.0では、Elasticsearch REST APIにいくつかの重要な変更が導入されました。これらの変更に対応するためにアプリケーションをアップデートすることは不可欠ですが、アップグレード後にすべてのAPI呼び出しを検索してアップデートするのは、開発者にとって面倒でエラーが発生しやすい作業になる可能性があります。このプロセスを容易にするために、ElasticsearchはREST APIに7.x互換ヘッダーのサポートを追加しました。これらのオプションのヘッダーファイルを使用すると、8.0クラスターに対して7.x互換のリクエストを送信し、7.x互換のレスポンスを受け取ることができます。

開発者はネイティブ 8.0 のリクエストとレスポンスを使用するようにアプリケーションを更新することが公式にはまだ推奨されていますが、7.x API 互換のヘッダー ファイルを使用すると、より長期間にわたって安全にこれらの変更を行うことができます。

セキュリティ機能はデフォルトで有効化され、構成されています。

セキュリティ対策を講じずにElasticsearchを実行すると、Elasticsearchにリクエストを送信できるすべてのユーザーにクラスターが公開されます。以前のバージョンでは、認証、認可、ネットワーク暗号化(TLS)などのElasticsearchのセキュリティ機能を明示的に有効にする必要がありました。Elasticsearch 8.0以降では、これらのセキュリティ機能はElasticsearchの初回起動時にデフォルトで有効化され、設定されます。

Elasticsearch 8.0は起動時に登録トークンを生成します。このトークンを使用することで、セキュリティ証明書の生成やYAML設定ファイルの更新をすることなく、Kibanaインスタンスに接続したり、セキュアなElasticsearchクラスター内の他のノードを登録したりできます。新しいノードまたはKibanaインスタンスを起動する際に、生成された登録トークンを使用するだけで、Elastic Stackがすべてのセキュリティ設定を自動的に処理します。

既知の問題:

  • Linux ARMやmacOS M1などのarch64プラットフォームにアーカイブからElasticsearchをインストールした場合、最初のノード起動時にElasticsearchユーザーパスワードとKibana登録トークンは自動生成されません。ノード起動後、`bin/elasticsearch-reset-password`ツールを使用してElasticsearchパスワードを生成する必要があります。
 bin / elasticsearch -リセット-パスワード- u elastic
  • 次に、bin/elasticsearch-create-enrollment-token ツールを使用して、Kibana の登録トークンを作成します。
 bin / elasticsearch - 作成-登録-トークン- s kibana

システムインデックスの保護強化

システムインデックスは、Elastic関数の設定と内部データを保存します。通常、システムインデックスはこれらの関数による内部使用のみを目的として予約されています。システムインデックスへの直接アクセスや変更は可能ですが、不安定性などの問題を引き起こす可能性があります。

Elasticsearch 8.0では、システムインデックスへの直接アクセスを防止するための変更がいくつか行われました。システムインデックスにアクセスするには、ユーザーは「allow_restricted_indices」権限を「true」に設定する必要があります。

スーパーユーザーロールは、システムインデックスへの書き込み権限を付与しなくなりました。そのため、Elasticの組み込みスーパーユーザーは、デフォルトではシステムインデックスを変更できません。

今後、開発者はシステムインデックスにアクセスするのではなく、Kibanaまたは関連するElasticsearch APIを使用して特定の関数のデータを管理する必要があります。システムインデックスに直接アクセスすると、ElasticsearchはAPIレスポンスヘッダーと古いログに警告を返します。

新しいKNN検索API

Elasticsearch 8.0では、KNN検索APIのテクニカルプレビューが導入されました。k近傍法(KNN)検索は、`dense_vector`フィールドを使用して、クエリベクトル(類似度メトリックで測定)のk近傍点を検索します。KNNは、自然言語処理(NLP)アルゴリズムに基づくレコメンデーションエンジンや関連性ランキングのサポートに広く利用されています。

これまでElasticsearchは、ベクトル関数を用いた`script_score`クエリを用いた正確なKNN検索のみをサポートしていました。このアプローチは正確な結果を保証する一方で、検索速度が遅くなることが多く、大規模なデータセットではスケーリングがうまくいかないという問題がありました。インデックス作成の遅延と不完全な精度というトレードオフとして、新しいKNN検索APIでは、大規模なデータセットで近似KNN検索をより高速に実行できるようになりました。

キーワード、match_only_text、テキスト フィールドのストレージ スペースを節約します。

このリリースでは、よりスペース効率の高いエンコーディングを使用する内部データ構造である転置インデックスが更新されました。この変更は、キーワード、match_only_text、およびテキストフィールドに効果があります。アプリケーションログを使用したベンチマークでは、このメッセージフィールド(match_only_textにマッピング)への移行により、インデックスサイズが14.4%、ディスク使用量が全体で3.5%削減されました。

geo_point、geo_shape、range フィールドのインデックス作成を高速化します。

新バージョンでは、geo_point、geo_shape、rangeフィールドで使用される内部データ構造である多次元ポイントのインデックス作成速度が最適化されています。Luceneレベルのベンチマークでは、これらのフィールドタイプのインデックス作成速度が10~15%向上しています。これらのフィールドを主に含むElasticsearchのインデックスとデータストリームでは、インデックス作成速度が大幅に向上する可能性があります。

PyTorch モデルは自然言語処理 (NLP) をサポートしています。

Elasticsearch外でトレーニングされたPyTorchモデルをアップロードし、推論に使用できるようになりました。サードパーティモデルのサポートにより、Elastic Stackで最新の自然言語処理(NLP)と検索のユースケースを活用できるようになります。

その他の変更点

集計:

  • 隣接するマトリックス設定を削除します #46327 (問題: #46257、#46324)
  • MovingAverage パイプライン集計を削除 #39328
  • 非推奨の_timeおよび_termフィールドを削除します。ソート#39450
  • 廃止された日付履歴間隔 #75000 を削除します

割り当て:

  • include_relocations 設定を削除 #47717 (問題: #46079、#47443)

分析:

  • クリーンアップ分析におけるバージョン管理の廃止 #41560 (問題: #41164)
  • 事前設定された delimited_pa​​yload_filter を削除します #43686 (問題: #41560、#43684)

認証:

  • 明示的に無効にしない限り、常にファイルとネイティブ レルム #69096 (問題: #50892) を追加します。
  • ポリシーではデフォルトで NameID 形式を設定しないでください。(問題: #44090)
  • 設定の順序を強制するように Realm を構成する #51195 (問題: #37614)

クラスター調整:

  • 接続の削除がタイムアウトしました #60873 (問題: #60872)
  • マスター コントローラーを一時停止する遅延状態回復のサポートを削除しました #53845 (問題: #51806)

配布先:

  • 同期更新を削除 #50882 (問題: #50776、#50835)
  • cluster.remote.connect 設定を削除 #54175 (問題: #53924)

エンジン:

  • 強制マージでは、only_expunge_deletes と max_num_segments を設定するリクエストを拒否する必要があります #44761 (問題: #43102)。
  • 各タイプのインデックス統計を削除します #47203 (問題: #41059)
  • 設定を保持したままトランスログを削除します #51697 (問題: #50775)

機能/CAT API:

  • _cat/indices の廃止されたローカルパラメータを削除しました #64868 (問題: #62198)
  • _cat/shards の廃止されたローカルパラメータを削除します #64867 (問題: #62197)

機能/ILM+SLM:

  • cluster.routing.allocation.enforce_default_tier_preference のデフォルト値は true です #79275 (問題: #76147、#79210)。

機能/インデックスAPI

  • prefer_v2_templates パラメータのデフォルト値を true に設定します #55489 (問題: #53101、#55411)
  • 非推奨の _upgrade API を削除しました #64732 (問題: #21337)
  • REST レイヤーからパラメータ include_type_name を削除します。
  • インデックス テンプレートから `template` フィールドを削除します #49460 (問題: #21009)

インフラ/コア

  • データ パスから nodes/0 フォルダー プレフィックスを削除します。
  • bootstrap.system_call_filter 設定を削除 #72848
  • node.max_local_storage_nodes を削除 #42428 (問題: #42426)
  • Joda 依存関係を削除 #79007
  • 日付/時刻のフォーマットからキャメルケースを削除します #60044
  • ...

パッケージ

  • SysV 初期化サポートを削除 #51716
  • JAVA_HOME のサポートを削除 #69149
  • Elasticsearch を実行するには Java 17 が必要です #79873

...

詳細については、https://www.elastic.co/cn/blog/whats-new-elastic-8-0-0 をご覧ください。