Kibanaにおけるインデックス管理

Kibanaのインデックス管理機能は、クラスターのインデックス、データストリームインデックステンプレート、およびエンリッチポリシーを管理するための簡単で便利な方法です。適切なインデックス管理を実践することで、データが正しく、かつ最もコスト効率の良い方法で保存されることが保証されます。

これらの機能を使用するには、スタック管理
> インデックス管理に移動します。

必要な権限

Elasticsearchのセキュリティ機能を使用する場合、次のセキュリティ特権が必要です:

  • Kibanaのインデックス管理機能にアクセスするためのmonitorクラスター特権。
  • データストリームまたはインデックスのデータを表示するためのview_index_metadataおよびmanageインデックス特権。
  • インデックステンプレートを管理するためのmanage_index_templatesクラスター特権。

これらの特権を追加するには、スタック管理
> セキュリティ
> ロール
に移動するか、ロールの作成または更新APIを使用します。

インデックスの管理

インデックスを調査し、インデックスビューから操作を実行します。

インデックス管理UI

  • 詳細を表示し、クローズ、フォースマージ、フラッシュなどの操作を実行するには、インデックス名をクリックします。複数のインデックスに対して操作を実行するには、それらのチェックボックスを選択し、次に管理メニューを開きます。インデックスの管理に関する詳細は、インデックスAPIを参照してください。
  • インデックスのリストをフィルタリングするには、検索バーを使用するか、バッジをクリックします。バッジは、インデックスがfollower indexrollup index、またはfrozenであるかどうかを示します。
  • インデックスのmappingssettings、および統計を詳しく調べるには、インデックス名をクリックします。このビューから、Discoverに移動してインデックス内のドキュメントをさらに探索できます。
    インデックス管理UI

データストリームの管理

データストリームを調査し、データストリームビューでライフサイクル管理のニーズに対処します。

インデックス列の値は、バックインデックスの数を示します。この数をクリックして詳細に掘り下げます。

データ保持列の値は、データストリームがdata stream lifecycle policyによって管理されていることを示します。この値は、データが保存されることが保証される期間です。この期間を超えたデータは、後でElasticsearchによって削除される可能性があります。

データストリームの詳細

  • データストリームに関する詳細情報(生成や現在のインデックスライフサイクルポリシーなど)を表示するには、ストリーム名をクリックします。このビューから、Discoverに移動してデータストリーム内のデータをさらに探索できます。
  • [プレビュー] この機能は技術プレビュー中であり、将来のリリースで変更または削除される可能性があります。Elasticは問題を修正するために取り組みますが、技術プレビューの機能は公式GA機能のサポートSLAの対象ではありません。データ保持値を編集するには、管理メニューを開き、次にデータ保持を編集をクリックします。このアクションは、データストリームがILMポリシーによって管理されていない場合にのみ利用可能です。

インデックステンプレートの管理

インデックステンプレートをインデックステンプレートビューで作成、編集、クローン、削除します。インデックステンプレートに加えた変更は、既存のインデックスには影響しません。

インデックステンプレート

試してみる:インデックステンプレートの作成

このチュートリアルでは、インデックステンプレートを作成し、それを使用して2つの新しいインデックスを構成します。

ステップ1. 名前とインデックスパターンを追加

  • 1. インデックステンプレートビューで、テンプレートの作成ウィザードを開きます。
    作成ウィザード
  • 2. 名前フィールドにmy-index-templateを入力します。
  • 3. インデックスパターンmy-index-*に設定し、テンプレートがそのインデックスパターンを持つ任意のインデックスに一致するようにします。
  • 4. データストリーム優先度バージョン、および_metaフィールドは空白のままにするか、そのままにします。

ステップ2. 設定、マッピング、およびエイリアスを追加

  • 1. コンポーネントテンプレートをインデックステンプレートに追加します。
    コンポーネントテンプレートは、複数のインデックステンプレートで再利用できるマッピング、インデックス設定、およびエイリアスの事前構成されたセットです。バッジは、コンポーネントテンプレートがマッピング(M)、インデックス設定(S)、エイリアス(A)、またはその3つの組み合わせを含むかどうかを示します。
    コンポーネントテンプレートはオプションです。このチュートリアルでは、コンポーネントテンプレートを追加しないでください。
    コンポーネントテンプレートページ
  • 2. インデックス設定を定義します。これはオプションです。このチュートリアルでは、このセクションを空白のままにします。
  • 3. geoという名前のobjectフィールドを含むマッピングを定義し、geo_pointという名前の子フィールドgeo_pointを持ちます:
    マッピングされたフィールドページ
    または、JSONを読み込むリンクをクリックして、マッピングをJSONとして定義することもできます。

Js

  1. {
  2. "properties": {
  3. "geo": {
  4. "properties": {
  5. "coordinates": {
  6. "type": "geo_point"
  7. }
  8. }
  9. }
  10. }
  11. }

ダイナミックテンプレートおよび高度なオプションタブで追加のマッピング構成を作成できます。このチュートリアルでは、追加のマッピングを作成しないでください。

  • 4. my-indexという名前のエイリアスを定義します:

Js

  1. {
  2. "my-index": {}
  3. }
  • 5. レビューページで、要約を確認します。すべてが正しければ、テンプレートを作成をクリックします。

ステップ3. 新しいインデックスを作成

インデックステンプレートを使用して新しいインデックスを作成する準備が整いました。

  • 1. 次のドキュメントをインデックスして、2つのインデックスを作成します:my-index-000001およびmy-index-000002

Python

  1. resp = client.index(
  2. index="my-index-000001",
  3. document={
  4. "@timestamp": "2019-05-18T15:57:27.541Z",
  5. "ip": "225.44.217.191",
  6. "extension": "jpg",
  7. "response": "200",
  8. "geo": {
  9. "coordinates": {
  10. "lat": 38.53146222,
  11. "lon": -121.7864906
  12. }
  13. },
  14. "url": "https://media-for-the-masses.theacademyofperformingartsandscience.org/uploads/charles-fullerton.jpg"
  15. },
  16. )
  17. print(resp)
  18. resp1 = client.index(
  19. index="my-index-000002",
  20. document={
  21. "@timestamp": "2019-05-20T03:44:20.844Z",
  22. "ip": "198.247.165.49",
  23. "extension": "php",
  24. "response": "200",
  25. "geo": {
  26. "coordinates": {
  27. "lat": 37.13189556,
  28. "lon": -76.4929875
  29. }
  30. },
  31. "memory": 241720,
  32. "url": "https://theacademyofperformingartsandscience.org/people/type:astronauts/name:laurel-b-clark/profile"
  33. },
  34. )
  35. print(resp1)

Ruby

  1. response = client.index(
  2. index: 'my-index-000001',
  3. body: {
  4. "@timestamp": '2019-05-18T15:57:27.541Z',
  5. ip: '225.44.217.191',
  6. extension: 'jpg',
  7. response: '200',
  8. geo: {
  9. coordinates: {
  10. lat: 38.53146222,
  11. lon: -121.7864906
  12. }
  13. },
  14. url: 'https://media-for-the-masses.theacademyofperformingartsandscience.org/uploads/charles-fullerton.jpg'
  15. }
  16. )
  17. puts response
  18. response = client.index(
  19. index: 'my-index-000002',
  20. body: {
  21. "@timestamp": '2019-05-20T03:44:20.844Z',
  22. ip: '198.247.165.49',
  23. extension: 'php',
  24. response: '200',
  25. geo: {
  26. coordinates: {
  27. lat: 37.13189556,
  28. lon: -76.4929875
  29. }
  30. },
  31. memory: 241_720,
  32. url: 'https://theacademyofperformingartsandscience.org/people/type:astronauts/name:laurel-b-clark/profile'
  33. }
  34. )
  35. puts response

Js

  1. const response = await client.index({
  2. index: "my-index-000001",
  3. document: {
  4. "@timestamp": "2019-05-18T15:57:27.541Z",
  5. ip: "225.44.217.191",
  6. extension: "jpg",
  7. response: "200",
  8. geo: {
  9. coordinates: {
  10. lat: 38.53146222,
  11. lon: -121.7864906,
  12. },
  13. },
  14. url: "https://media-for-the-masses.theacademyofperformingartsandscience.org/uploads/charles-fullerton.jpg",
  15. },
  16. });
  17. console.log(response);
  18. const response1 = await client.index({
  19. index: "my-index-000002",
  20. document: {
  21. "@timestamp": "2019-05-20T03:44:20.844Z",
  22. ip: "198.247.165.49",
  23. extension: "php",
  24. response: "200",
  25. geo: {
  26. coordinates: {
  27. lat: 37.13189556,
  28. lon: -76.4929875,
  29. },
  30. },
  31. memory: 241720,
  32. url: "https://theacademyofperformingartsandscience.org/people/type:astronauts/name:laurel-b-clark/profile",
  33. },
  34. });
  35. console.log(response1);

コンソール

  1. POST /my-index-000001/_doc
  2. {
  3. "@timestamp": "2019-05-18T15:57:27.541Z",
  4. "ip": "225.44.217.191",
  5. "extension": "jpg",
  6. "response": "200",
  7. "geo": {
  8. "coordinates": {
  9. "lat": 38.53146222,
  10. "lon": -121.7864906
  11. }
  12. },
  13. "url": "https://media-for-the-masses.theacademyofperformingartsandscience.org/uploads/charles-fullerton.jpg"
  14. }
  15. POST /my-index-000002/_doc
  16. {
  17. "@timestamp": "2019-05-20T03:44:20.844Z",
  18. "ip": "198.247.165.49",
  19. "extension": "php",
  20. "response": "200",
  21. "geo": {
  22. "coordinates": {
  23. "lat": 37.13189556,
  24. "lon": -76.4929875
  25. }
  26. },
  27. "memory": 241720,
  28. "url": "https://theacademyofperformingartsandscience.org/people/type:astronauts/name:laurel-b-clark/profile"
  29. }
  • 2. インデックス取得APIを使用して、新しいインデックスの構成を表示します。インデックスは、以前に作成したインデックステンプレートを使用して構成されました。

Python

  1. resp = client.indices.get(
  2. index="my-index-000001,my-index-000002",
  3. )
  4. print(resp)

Ruby

  1. response = client.indices.get(
  2. index: 'my-index-000001,my-index-000002'
  3. )
  4. puts response

Js

  1. const response = await client.indices.get({
  2. index: "my-index-000001,my-index-000002",
  3. });
  4. console.log(response);

コンソール

  1. GET /my-index-000001,my-index-000002

エンリッチポリシーの管理

エンリッチポリシービューを使用して、既存のインデックスからのデータを取り込み中のドキュメントに追加します。エンリッチポリシーには次のものが含まれます:

  • ポリシーがエンリッチデータを取り込み中のドキュメントにどのように一致させるかを決定するポリシータイプ
  • エンリッチデータをドキュメントとして保存するソースインデックス
  • 取り込み中のドキュメントと一致させるために使用されるソースインデックスのフィールド
  • 取り込み中のドキュメントに追加したいソースインデックスからのエンリッチデータを含むエンリッチフィールド
  • オプションのクエリ

    エンリッチポリシー

エンリッチポリシーを作成する際、UIは構成設定とフィールドの選択を案内します。エンリッチプロセッサーまたはES|QLクエリでポリシーを使用する前に、ポリシーを実行する必要があります。

実行されると、エンリッチポリシーはポリシーのソースインデックスからのエンリッチデータを使用して、エンリッチインデックスと呼ばれるストリームライン化されたシステムインデックスを作成します。このポリシーは、このインデックスを使用して取り込み中のドキュメントを一致させてエンリッチします。

これらの例をチェックしてください: