インデックスセグメントAPI
インデックスシャード内のLuceneセグメントに関する低レベルの情報を返します。データストリームの場合、APIはストリームのバックインデックスに関する情報を返します。
Python
resp = client.indices.segments(
index="my-index-000001",
)
print(resp)
Ruby
response = client.indices.segments(
index: 'my-index-000001'
)
puts response
Js
const response = await client.indices.segments({
index: "my-index-000001",
});
console.log(response);
コンソール
GET /my-index-000001/_segments
リクエスト
GET /<target>/_segments
GET /_segments
前提条件
- Elasticsearchのセキュリティ機能が有効になっている場合、ターゲットデータストリーム、インデックス、またはエイリアスに対して
monitor
またはmanage
インデックス特権を持っている必要があります。
パスパラメータ
<target>
- (オプション、文字列)リクエストを制限するために使用されるデータストリーム、インデックス、およびエイリアスのカンマ区切りリスト。ワイルドカード(
*
)をサポートします。すべてのデータストリームとインデックスをターゲットにするには、このパラメータを省略するか、*
または_all
を使用します。
クエリパラメータ
<vector_formats>
- (オプション、ブール値)
true
の場合、各セグメント内のフィールドによって使用されるベクトルフォーマットのリストが出力attributes
に含まれます。デフォルトはfalse
です。 allow_no_indices
- (オプション、ブール値)
false
の場合、リクエストは、ワイルドカード式、インデックスエイリアス、または_all
値が欠落または閉じたインデックスのみをターゲットにする場合にエラーを返します。この動作は、リクエストが他のオープンインデックスをターゲットにしている場合でも適用されます。たとえば、foo*,bar*
をターゲットにするリクエストは、foo
で始まるインデックスがあるが、bar
で始まるインデックスがない場合にエラーを返します。デフォルトはtrue
です。 expand_wildcards
- (オプション、文字列)ワイルドカードパターンが一致できるインデックスのタイプ。リクエストがデータストリームをターゲットにできる場合、この引数はワイルドカード式が隠れたデータストリームに一致するかどうかを決定します。カンマ区切りの値をサポートします。たとえば、
open,hidden
。有効な値は次のとおりです:all
- すべてのデータストリームまたはインデックスに一致します。隠れたものも含まれます[b10cb0563daae284.md#multi-hidden]。
open
- オープンで非隠れたインデックスに一致します。また、非隠れたデータストリームにも一致します。
closed
- クローズドで非隠れたインデックスに一致します。また、非隠れたデータストリームにも一致します。データストリームはクローズできません。
hidden
- 隠れたデータストリームと隠れたインデックスに一致します。
open
、closed
、またはその両方と組み合わせる必要があります。 none
- ワイルドカードパターンは受け付けられません。
デフォルトはopen
です。
ignore_unavailable
- (オプション、ブール値)
false
の場合、リクエストは欠落またはクローズされたインデックスをターゲットにする場合にエラーを返します。デフォルトはfalse
です。
レスポンスボディ
<segment>
- (文字列)セグメントの名前、たとえば
_0
。セグメント名はセグメント生成から派生し、シャードのディレクトリ内のファイル名を作成するために内部的に使用されます。 generation
- (整数)生成番号、たとえば
0
。Elasticsearchは、書き込まれた各セグメントに対してこの生成番号をインクリメントします。Elasticsearchはこの番号を使用してセグメント名を導出します。 num_docs
- (整数)Luceneによって報告されたドキュメントの数。この数には削除されたドキュメントは含まれず、ネストされたドキュメントは親から別々にカウントされます。また、最近インデックスされたドキュメントは含まれず、まだセグメントに属していません。
deleted_docs
- (整数)Luceneによって報告された削除されたドキュメントの数。これは、実行した削除操作の数よりも多い場合や少ない場合があります。この数には最近実行された削除は含まれず、まだセグメントに属していません。削除されたドキュメントは、自動マージプロセスによってクリーンアップされます。さらに、Elasticsearchはシャード上の操作の最近の履歴を内部的に追跡するために追加の削除されたドキュメントを作成します。
size_in_bytes
- (整数)セグメントによって使用されるディスクスペース、たとえば
50kb
。 committed
- (ブール値)
true
の場合、セグメントはディスクに同期されます。同期されたセグメントはハードリブートを生き延びることができます。false
の場合、未コミットのセグメントからのデータもトランザクションログに保存され、Elasticsearchは次回の起動時に変更を再生できるようになります。 search
- (ブール値)
true
の場合、セグメントは検索可能です。false
の場合、セグメントはおそらくディスクに書き込まれていますが、検索可能になるにはリフレッシュが必要です。 version
- (文字列)セグメントを書き込むために使用されたLuceneのバージョン。
compound
- (ブール値)
true
の場合、Luceneはセグメントからのすべてのファイルを単一のファイルにマージしてファイルディスクリプタを節約しました。 attributes
- (オブジェクト)(i)高圧縮が有効になっているかどうか、(ii)フィールドごとのベクトルフォーマットに関する情報を含みます。
例
特定のデータストリームまたはインデックスのセグメント情報を取得
Python
resp = client.indices.segments(
index="test",
)
print(resp)
Ruby
response = client.indices.segments(
index: 'test'
)
puts response
Js
const response = await client.indices.segments({
index: "test",
});
console.log(response);
コンソール
GET /test/_segments
複数のデータストリームとインデックスのセグメント情報を取得
Python
resp = client.indices.segments(
index="test1,test2",
)
print(resp)
Ruby
response = client.indices.segments(
index: 'test1,test2'
)
puts response
Js
const response = await client.indices.segments({
index: "test1,test2",
});
console.log(response);
コンソール
GET /test1,test2/_segments
クラスター内のすべてのデータストリームとインデックスのセグメント情報を取得
Python
resp = client.indices.segments()
print(resp)
Ruby
response = client.indices.segments
puts response
Js
const response = await client.indices.segments();
console.log(response);
コンソール
GET /_segments
APIは次のレスポンスを返します:
コンソール-レスポンス
{
"_shards": ...
"indices": {
"test": {
"shards": {
"0": [
{
"routing": {
"state": "STARTED",
"primary": true,
"node": "zDC_RorJQCao9xf9pg3Fvw"
},
"num_committed_segments": 0,
"num_search_segments": 1,
"segments": {
"_0": {
"generation": 0,
"num_docs": 1,
"deleted_docs": 0,
"size_in_bytes": 3800,
"committed": false,
"search": true,
"version": "7.0.0",
"compound": true,
"attributes": {
}
}
}
}
]
}
}
}
}