Kibanaにおけるインデックス管理
Kibanaのインデックス管理機能は、クラスターのインデックス、データストリーム、インデックステンプレート、およびエンリッチポリシーを管理するための簡単で便利な方法です。適切なインデックス管理を実践することで、データが正しく、かつ最もコスト効率の良い方法で保存されることが保証されます。
これらの機能を使用するには、スタック管理
> インデックス管理に移動します。
必要な権限
Elasticsearchのセキュリティ機能を使用する場合、次のセキュリティ特権が必要です:
- Kibanaのインデックス管理機能にアクセスするための
monitor
クラスター特権。 - データストリームまたはインデックスのデータを表示するための
view_index_metadata
およびmanage
インデックス特権。 - インデックステンプレートを管理するための
manage_index_templates
クラスター特権。
これらの特権を追加するには、スタック管理
> セキュリティ
> ロールに移動するか、ロールの作成または更新APIを使用します。
インデックスの管理
インデックスを調査し、インデックスビューから操作を実行します。
- 詳細を表示し、クローズ、フォースマージ、フラッシュなどの操作を実行するには、インデックス名をクリックします。複数のインデックスに対して操作を実行するには、それらのチェックボックスを選択し、次に管理メニューを開きます。インデックスの管理に関する詳細は、インデックスAPIを参照してください。
- インデックスのリストをフィルタリングするには、検索バーを使用するか、バッジをクリックします。バッジは、インデックスがfollower index、rollup index、またはfrozenであるかどうかを示します。
- インデックスのmappings、settings、および統計を詳しく調べるには、インデックス名をクリックします。このビューから、Discoverに移動してインデックス内のドキュメントをさらに探索できます。
データストリームの管理
データストリームを調査し、データストリームビューでライフサイクル管理のニーズに対処します。
インデックス列の値は、バックインデックスの数を示します。この数をクリックして詳細に掘り下げます。
データ保持列の値は、データストリームが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
{
"properties": {
"geo": {
"properties": {
"coordinates": {
"type": "geo_point"
}
}
}
}
}
ダイナミックテンプレートおよび高度なオプションタブで追加のマッピング構成を作成できます。このチュートリアルでは、追加のマッピングを作成しないでください。
- 4.
my-index
という名前のエイリアスを定義します:
Js
{
"my-index": {}
}
- 5. レビューページで、要約を確認します。すべてが正しければ、テンプレートを作成をクリックします。
ステップ3. 新しいインデックスを作成
インデックステンプレートを使用して新しいインデックスを作成する準備が整いました。
- 1. 次のドキュメントをインデックスして、2つのインデックスを作成します:
my-index-000001
およびmy-index-000002
。
Python
resp = client.index(
index="my-index-000001",
document={
"@timestamp": "2019-05-18T15:57:27.541Z",
"ip": "225.44.217.191",
"extension": "jpg",
"response": "200",
"geo": {
"coordinates": {
"lat": 38.53146222,
"lon": -121.7864906
}
},
"url": "https://media-for-the-masses.theacademyofperformingartsandscience.org/uploads/charles-fullerton.jpg"
},
)
print(resp)
resp1 = client.index(
index="my-index-000002",
document={
"@timestamp": "2019-05-20T03:44:20.844Z",
"ip": "198.247.165.49",
"extension": "php",
"response": "200",
"geo": {
"coordinates": {
"lat": 37.13189556,
"lon": -76.4929875
}
},
"memory": 241720,
"url": "https://theacademyofperformingartsandscience.org/people/type:astronauts/name:laurel-b-clark/profile"
},
)
print(resp1)
Ruby
response = client.index(
index: 'my-index-000001',
body: {
"@timestamp": '2019-05-18T15:57:27.541Z',
ip: '225.44.217.191',
extension: 'jpg',
response: '200',
geo: {
coordinates: {
lat: 38.53146222,
lon: -121.7864906
}
},
url: 'https://media-for-the-masses.theacademyofperformingartsandscience.org/uploads/charles-fullerton.jpg'
}
)
puts response
response = client.index(
index: 'my-index-000002',
body: {
"@timestamp": '2019-05-20T03:44:20.844Z',
ip: '198.247.165.49',
extension: 'php',
response: '200',
geo: {
coordinates: {
lat: 37.13189556,
lon: -76.4929875
}
},
memory: 241_720,
url: 'https://theacademyofperformingartsandscience.org/people/type:astronauts/name:laurel-b-clark/profile'
}
)
puts response
Js
const response = await client.index({
index: "my-index-000001",
document: {
"@timestamp": "2019-05-18T15:57:27.541Z",
ip: "225.44.217.191",
extension: "jpg",
response: "200",
geo: {
coordinates: {
lat: 38.53146222,
lon: -121.7864906,
},
},
url: "https://media-for-the-masses.theacademyofperformingartsandscience.org/uploads/charles-fullerton.jpg",
},
});
console.log(response);
const response1 = await client.index({
index: "my-index-000002",
document: {
"@timestamp": "2019-05-20T03:44:20.844Z",
ip: "198.247.165.49",
extension: "php",
response: "200",
geo: {
coordinates: {
lat: 37.13189556,
lon: -76.4929875,
},
},
memory: 241720,
url: "https://theacademyofperformingartsandscience.org/people/type:astronauts/name:laurel-b-clark/profile",
},
});
console.log(response1);
コンソール
POST /my-index-000001/_doc
{
"@timestamp": "2019-05-18T15:57:27.541Z",
"ip": "225.44.217.191",
"extension": "jpg",
"response": "200",
"geo": {
"coordinates": {
"lat": 38.53146222,
"lon": -121.7864906
}
},
"url": "https://media-for-the-masses.theacademyofperformingartsandscience.org/uploads/charles-fullerton.jpg"
}
POST /my-index-000002/_doc
{
"@timestamp": "2019-05-20T03:44:20.844Z",
"ip": "198.247.165.49",
"extension": "php",
"response": "200",
"geo": {
"coordinates": {
"lat": 37.13189556,
"lon": -76.4929875
}
},
"memory": 241720,
"url": "https://theacademyofperformingartsandscience.org/people/type:astronauts/name:laurel-b-clark/profile"
}
- 2. インデックス取得APIを使用して、新しいインデックスの構成を表示します。インデックスは、以前に作成したインデックステンプレートを使用して構成されました。
Python
resp = client.indices.get(
index="my-index-000001,my-index-000002",
)
print(resp)
Ruby
response = client.indices.get(
index: 'my-index-000001,my-index-000002'
)
puts response
Js
const response = await client.indices.get({
index: "my-index-000001,my-index-000002",
});
console.log(response);
コンソール
GET /my-index-000001,my-index-000002
エンリッチポリシーの管理
エンリッチポリシービューを使用して、既存のインデックスからのデータを取り込み中のドキュメントに追加します。エンリッチポリシーには次のものが含まれます:
- ポリシーがエンリッチデータを取り込み中のドキュメントにどのように一致させるかを決定するポリシータイプ
- エンリッチデータをドキュメントとして保存するソースインデックス
- 取り込み中のドキュメントと一致させるために使用されるソースインデックスのフィールド
- 取り込み中のドキュメントに追加したいソースインデックスからのエンリッチデータを含むエンリッチフィールド
オプションのクエリ。
エンリッチポリシーを作成する際、UIは構成設定とフィールドの選択を案内します。エンリッチプロセッサーまたはES|QLクエリでポリシーを使用する前に、ポリシーを実行する必要があります。
実行されると、エンリッチポリシーはポリシーのソースインデックスからのエンリッチデータを使用して、エンリッチインデックスと呼ばれるストリームライン化されたシステムインデックスを作成します。このポリシーは、このインデックスを使用して取り込み中のドキュメントを一致させてエンリッチします。
これらの例をチェックしてください: