データベース
 Computer >> コンピューター >  >> プログラミング >> データベース

Elasticsearchエイリアス

この投稿では、Elasticsearch®エイリアスを調べて、ObjectRocketがホストするCuratorimplementationでのエイリアスアクションへのアクセスを祝います。また、Elasticsearchエイリアスの利点とその使用方法についても確認します。

Elasticsearchでのエイリアスの使用の概要

元々は2017年8月24日にObjectRocket.com/blogで公開されました

Elasticsearchエイリアス

Elasticsearchの優れた衛生管理のための優れた戦略は、過剰な量のデータを保持する大量のインデックスを回避することです。ただし、データが複数のインデックスに分散した後は、おそらくそれらを検索するための最良の方法が必要になります。そこで、エイリアスが役に立ちます。

Elasticsearchのエイリアスは、まさにそのように聞こえます。1つまたは複数のインデックスを参照するために使用できるセカンダリ名であり、ニーズに対応するためのフィルタリングを含めることもできます。この投稿では、エイリアスを使用するいくつかのクールな方法と、この機能を使用する手順について説明します。これにより、ObjectRocketElasticsearchクラスターのエイリアスキュレータータスクをすばやく簡単に設定できます。

エイリアスを使用したCRUD(作成、読み取り、更新、削除)

エイリアスがどのように機能するかの簡単な例を見ていきましょう。 _catのいずれかを使用してエイリアスを一覧表示できます API。エイリアスとインデックスの関連付けごとに行を返し、フィルタリングとルーティングのどちらが適用されているかを示します。

    GET _cat/aliases?v
    alias index filter routing.index routing.search
    atest test1 – – –
    atest test2 – – –
    atest2 test2 * – –

または、/_aliasを使用することもできます すべてのエイリアスまたは/index/_aliasを表示するエンドポイント そのインデックスのエイリアスを表示するためのエンドポイント。インデックステンプレートを使用するか、PUTを使用して、作成中にエイリアスをインデックスに追加することもできます。 コマンド:

    PUT /test2
    {
    “aliases” : {
    “atest” : {},
    “atest2” : {
    “filter” : {
    “term” : {“user” : “objectrocket” }
    }
    }
    }
    }

次に、後で/_aliasesを使用して追加または変更します。 追加または削除するインデックスとエイリアスを指定してエンドポイント。

    POST /_aliases
    {
    “actions” : [
    { “add” : { “index” : “test1”, “alias” : “atest” } },
    { “remove” : { “index” : “test3”, “alias” : “atest” } }
    ] }

そこから、クエリでインデックス名の代わりにエイリアス名を使用できます。単一のインデックスを指すエイリアスにのみドキュメントのインデックスを作成できることに注意してください。公式ドキュメントから取得できるエイリアスの深さは明らかですが、これにより、エイリアスを操作する感覚が得られるはずです。

大したことは何ですか?

それはすべて非常に単純なようで、すでに販売されている可能性がありますが、そうでない場合は、エイリアスが実際に役立つ場所がいくつかあります。

ダウンタイムなしでインデックスを再作成

Elasticsearchの最も便利な機能の1つは、インデックスの再作成です。 API。ただし、インデックスを再作成した後でも、古いインデックスから新しいインデックスへのカットオーバーを管理する必要があります。エイリアスを使用すると、ダウンタイムなしでこのカットオーバーを実行できます。方法は次のとおりです。

  1. oldIndexというインデックスがあるとします。 newIndexにインデックスを再作成したい 。

  2. エイリアスを作成するmyalias それをoldIndexに追加します 。

  3. アプリケーションがmyaliasを指していることを確認してください oldIndexではなく 。

  4. newIndexを作成します oldIndexからデータのインデックスの再作成を開始します それに。

  5. newIndexを追加します myaliasoldIndexを削除します 。これを1つのコマンドで実行します。変更はアトミック(非常に小さく個別)であるため、移行中に問題は発生しません。

  6. エイリアスで期待どおりの結果が得られていることを確認してから、oldIndexを削除できます 準備ができたら。

不要な手順を回避するために、アプリケーションからの読み取りまたはクエリにエイリアスを使用することをお勧めします。

時間ベースのインデックスの範囲を取得する

Logstash®またはBeats®を使用している場合は、おそらくsomething-yyyy.mm.ddという名前のインデックスに精通しているでしょう。 。これにより、データのキュレーションと管理が非常に簡単になります。ワイルドカードとインデックスリストは、特に日付の範囲全体を検索する場合は、必ずしも希望するほど柔軟であるとは限りません。エイリアスは、そのような場合の簡単な解決策を提供します。毎日のlogstashインデックスがあり、ログを30日間保持するとします。ただし、特定の種類のクエリについては、過去7日間のみを確認する必要がある場合があります。エイリアスとキュレーターを使用することで、これをかなり簡単に行うことができます。

  1. 次の例のようなエイリアスを作成します:lastSevenDays

  2. デフォルトで新しいエイリアスにインデックスを追加するようにインデックステンプレートを設定します。

  3. Elasticsearch Curatorの使用 エイリアスアクションと年齢/パターンフィルター、または基本的なスクリプトを使用して、7日より古いインデックスを削除するための定期的なタスクを設定します。

  4. そこから、lastSevenDaysへのすべての検索 過去7日間に作成されたインデックスのみをヒットします。

顧客の例

お客様の1人からの小さな例を締めくくりたいと思います。この顧客には速度低下の問題がいくつかありました。いくつかのレビューの結果、一般的なクエリの1つが、実際にはクラスターの日付範囲全体を検索していることに気付きました。このクエリは、前にリストしたシナリオと非常によく似ており、過去7日間のデータのみが必要だったため、過去7日間のインデックスを指すように定期的に更新されるエイリアスで管理するのに最適な候補でした。次のグラフでは、クラスターのパフォーマンスへの影響が驚くべきものであることがわかります。

Elasticsearchエイリアス Elasticsearchエイリアス

このエイリアスは頻繁に照会されたため、この変更による影響を確認できます。これらのグラフは、すべてのノードでCPU使用率が50%以上低下し、クエリキャッシュの削除数が約75%低下したことを示しています。クエリの頻度とインデックスのサイズによっては、表示される結果はそれほど劇的ではない場合がありますが、検索の範囲とインデックスを適切に管理することがいかに重要であるかを示しています。

要約

エイリアスはElasticsearchツールボックスのもう1つのツールであり、クラスターの日常的な管理と操作を容易にするはずです。この投稿は網羅的ではありませんが、Elasticsearchの実装でエイリアスをどこでどのように使用できるかについてのアイデアを提供するはずです。

ObjectRocketを介してAliasCuratorタスクを設定するにはどうすればよいですか?

Elasticsearchクラスターはすでにエイリアスをサポートしていますが、新しいエイリアスキュレータータスク機能を使用すると、フィルターを指定して、条件に基づいて定期的な間隔でエイリアスにインデックスを追加または削除できるため、エイリアスの定期的なメンテナンスを簡単にセットアップできます。

これを説明するために、lastSevenDaysを見てみましょう。 エイリアスの例。ElasticsearchCuratorを使用した参照がすでにあります。これを簡単にするために、キュレータータスクの最初の実行でエイリアスを設定します。 Curatortaskで既存のエイリアスを参照できるため、より多くのカスタム設定が必要な場合は、エイリアスを個別に設定できます。

このエイリアスを管理するには、過去7日以内に作成された年齢基準に一致するインデックスのみを使用して、エイリアスを最新の状態に保つ必要があります。 AliasCuratorタスクを追加するクラスターのインスタンスの詳細ページから開始します。

Elasticsearchエイリアス

次に、キュレーターを選択します タブをクリックして、現在のキュレーターのタスクを確認します:

Elasticsearchエイリアス

ご覧のとおり、すでにいくつかのキュレータータスクがあります。もう1つ作成しましょう。今回は、AliasCuratorタスクを使用します。これを行うには、タスクの追加を選択します :

Elasticsearchエイリアス

これで、エイリアスを選択できます タスクタイプ:

Elasticsearchエイリアス

タスクに名前を付けた後、エイリアス名を指定する必要があります。 lastSevenDaysを使用しましょう この例では。いくつかのオプションも表示されます:追加 および削除 。これらを使用すると、エイリアスから追加または削除するインデックスのフィルターを指定できます。 lastSevenDaysの場合 、いくつかのインデックスを追加し、他のインデックスを削除します。それでは、両方を選択しましょう:

Elasticsearchエイリアス

必要なフィルターは、7日より新しいすべてのインデックスを追加し、7日より古いインデックスを削除します。それらを入力すると、インデックスは次の例のようになります。

Elasticsearchエイリアス

デフォルトの間隔(5分ごと)のままにして、エイリアスを最新の状態に保つためにこのタスクを定期的に実行するように指定できます。 タスクの保存を選択します 、 以上です!これで、ElasticsearchAliasを最新の状態に保つために、タスクが5分ごとに実行されます。

RackspaceDBAサービスの詳細をご覧ください。

コメントや質問をするには、[フィードバック]タブを使用します。 セールスチャットをクリックすることもできます 今すぐチャットして会話を始めましょう。


  1. Filebeatモジュールを使用した簡単なログ分析

    Elastic {on} 17以来、Elastic Stackの今後のすべての機能、特に新しいFilebeatモジュールのコンセプトに興奮しています。通常、Filebeatでデータの取得を開始する場合は、Filebeatを構成し、Elasticsearchマッピングテンプレートを作成し、取り込みパイプラインまたはLogstashインスタンスを作成してテストしてから、そのデータセットのKibanaビジュアライゼーションを作成する必要があります。 Beatsチームは、モジュールのコンセプトにより、セットアッププロセスを非常に簡単にしました。 Filebeatモジュールは、これらの構成手順をすべて

  2. ObjectRocketElasticsearchでKibana4を使用して稼働する

    数百万(または数十億!)のElasticsearchドキュメントを人目を引くチャート、グラフ、表に変換したい場合は、Kibanaがその答えです。 Elastic製品として、Elasticsearchと緊密に統合され、大量のデータを理解するための使いやすいインターフェースを提供します。 現在、すべてのObjectRocketElasticsearchインスタンスにはKibana3がプリロードされており、ElasticsearchHTTPエンドポイントの/_plugin/kibanaからアクセスできます。ただし、Kibana 4には多くの改善と新機能が導入されているため、ObjectRocket