- Reindex API
- Request
- Prerequisites
- Description
- Query parameters
- Request body
- Deprecated in 7.6.
- Response body
- Examples
- Reindex from remote
- Configuring SSL parameters
Reindex API
ソースから宛先にドキュメントをコピーします。
ソースは、既存のインデックス、エイリアス、またはデータストリームのいずれかである可能性があります。宛先はソースと異なる必要があります。たとえば、データストリームを自分自身に再インデックスすることはできません。
再インデックスには、ソース内のすべてのドキュメントに対して_source
を有効にする必要があります。
マッピング、シャード数、レプリカなどは、事前に構成する必要があります。
#### Python
``````python
resp = client.reindex(
source={
"index": "my-index-000001"
},
dest={
"index": "my-new-index-000001"
},
)
print(resp)
`
Ruby
response = client.reindex(
body: {
source: {
index: 'my-index-000001'
},
dest: {
index: 'my-new-index-000001'
}
}
)
puts response
Js
const response = await client.reindex({
source: {
index: "my-index-000001",
},
dest: {
index: "my-new-index-000001",
},
});
console.log(response);
Console
POST _reindex
{
"source": {
"index": "my-index-000001"
},
"dest": {
"index": "my-new-index-000001"
}
}
Request
POST /_reindex
Prerequisites
- Elasticsearchのセキュリティ機能が有効になっている場合、次のセキュリティ権限を持っている必要があります:
- ソースデータストリーム、インデックス、またはエイリアスに対する
read
インデックス権限。 - 宛先データストリーム、インデックス、またはインデックスエイリアスに対する
write
インデックス権限。 - 再インデックスAPIリクエストでデータストリームまたはインデックスを自動的に作成するには、宛先データストリーム、インデックス、またはエイリアスに対して
auto_configure
、create_index
、またはmanage
インデックス権限を持っている必要があります。 - リモートクラスターから再インデックスする場合、
source.remote.user
はソースデータストリーム、インデックス、またはエイリアスに対するmonitor
クラスター権限とread
インデックス権限を持っている必要があります。
- ソースデータストリーム、インデックス、またはエイリアスに対する
- リモートクラスターから再インデックスする場合、
reindex.remote.whitelist
の設定でリモートホストを明示的に許可する必要があります。詳細はリモートから再インデックスを参照してください。 - 自動データストリーム作成には、データストリームが有効な一致するインデックステンプレートが必要です。詳細はデータストリームの設定を参照してください。
Description
ソースインデックスから_update_by_query
を抽出し、ドキュメントを宛先インデックスにインデックスします。すべてのドキュメントを宛先インデックスにコピーすることも、ドキュメントのサブセットを再インデックスすることもできます。
_update_by_query
と同様に、_reindex
はソースのスナップショットを取得しますが、その宛先は異なる必要があるため、バージョンの競合が発生しにくくなります。dest
要素は、楽観的同時実行制御を制御するためにインデックスAPIのように構成できます。version_type
を省略するか、internal
に設定すると、Elasticsearchはドキュメントを宛先に盲目的にダンプし、同じIDを持つドキュメントを上書きします。
`````op_type`````を`````create`````に設定すると、`````_reindex`````は宛先に欠落しているドキュメントのみを作成します。すべての既存のドキュメントはバージョンの競合を引き起こします。
データストリームは[追加専用](4618071bf1c879cb.md#data-streams-append-only)であるため、宛先データストリームへの再インデックスリクエストは`````op_type`````が`````create`````である必要があります。再インデックスは、宛先データストリームに新しいドキュメントを追加することしかできません。既存のドキュメントを宛先データストリームで更新することはできません。
デフォルトでは、バージョンの競合は`````_reindex`````プロセスを中止します。競合が発生した場合でも再インデックスを続行するには、`````"conflicts"`````リクエストボディパラメータを`````proceed`````に設定します。この場合、応答には遭遇したバージョンの競合の数が含まれます。他のエラータイプの処理は`````"conflicts"`````パラメータの影響を受けません。さらに、バージョンの競合をカウントすることを選択した場合、操作は`````max_docs`````からソースから`````max_docs`````ドキュメントを宛先に正常にインデックスするまで、またはソースクエリ内のすべてのドキュメントを通過するまで、より多くのドキュメントを再インデックスしようとする可能性があります。
### Running reindex asynchronously
リクエストに`````wait_for_completion=false`````が含まれている場合、Elasticsearchは一部の事前チェックを実行し、リクエストを開始し、タスクのキャンセルまたはステータスを取得するために使用できる[`````task`````](/read/elasticsearch-8-15/4819d08b09fe89d8.md)を返します。Elasticsearchは、このタスクの記録を`````_tasks/<task_id>`````にドキュメントとして作成します。
### Reindex from multiple sources
多くのソースを再インデックスする必要がある場合、複数のソースを選択するためにグロブパターンを使用するよりも、一度に1つずつ再インデックスする方が一般的に良いです。その方が、部分的に完了したソースを削除してやり直すことで、エラーが発生した場合にプロセスを再開できます。また、プロセスを並行化するのも非常に簡単です:再インデックスするソースのリストを分割し、各リストを並行して実行します。
一時的なbashスクリプトは、これにうまく機能するようです:
#### Bash
``````bash
for index in i1 i2 i3 i4 i5; do
curl -HContent-Type:application/json -XPOST localhost:9200/_reindex?pretty -d'{
"source": {
"index": "'$index'"
},
"dest": {
"index": "'$index'-reindexed"
}
}'
done
`
Throttling
スロットリングは、バッチ間で待機することによって行われ、`````scroll`````が内部で使用する`````_reindex`````に、パディングを考慮したタイムアウトを与えることができます。パディング時間は、バッチサイズを`````requests_per_second`````で割った値と、書き込みに費やした時間の差です。デフォルトのバッチサイズは`````1000`````であるため、`````requests_per_second`````が`````500`````に設定されている場合:
#### Txt
``````txt
target_time = 1000 / 500 per second = 2 seconds
wait_time = target_time - write_time = 2 seconds - .5 seconds = 1.5 seconds
`
バッチが単一の_bulk
リクエストとして発行されるため、大きなバッチサイズはElasticsearchが多くのリクエストを作成し、次のセットを開始する前にしばらく待機する原因となります。これは「バースト」ではなく「スムーズ」ではありません。
Rethrottling
requests_per_second
の値は、_rethrottle
APIを使用して実行中の再インデックスで変更できます:
Php
$params = [
'task_id' => 'r1A2WoRbTwKZ516z6NEs5A:36619',
];
$response = $client->reindexRethrottle($params);
Python
resp = client.reindex_rethrottle(
task_id="r1A2WoRbTwKZ516z6NEs5A:36619",
requests_per_second="-1",
)
print(resp)
Ruby
response = client.reindex_rethrottle(
task_id: 'r1A2WoRbTwKZ516z6NEs5A:36619',
requests_per_second: -1
)
puts response
Go
res, err := es.ReindexRethrottle(
"r1A2WoRbTwKZ516z6NEs5A:36619",
esapi.IntPtr(-1),
)
fmt.Println(res, err)
Js
const response = await client.reindexRethrottle({
task_id: "r1A2WoRbTwKZ516z6NEs5A:36619",
requests_per_second: "-1",
});
console.log(response);
Console
POST _reindex/r1A2WoRbTwKZ516z6NEs5A:36619/_rethrottle?requests_per_second=-1
タスクIDは、requests_per_second
を使用して見つけることができます。
再インデックスAPIで設定する場合と同様に、requests_per_second
はスロットリングを無効にするための-1
または1.7
や12
のような任意の小数にすることができます。クエリを高速化するための再スロットリングは即座に効果を発揮しますが、クエリを遅くする再スロットリングは、現在のバッチが完了した後に効果を発揮します。これにより、スクロールタイムアウトが防止されます。
Slicing
再インデックスは、再インデックスプロセスを並行化するためにSliced scrollをサポートしています。この並行化は効率を改善し、リクエストを小さな部分に分割する便利な方法を提供します。
リモートクラスターからの再インデックスは、手動または自動スライスをサポートしていません。
Manual slicing
スライスIDとスライスの総数を各リクエストに提供することで、再インデックスリクエストを手動でスライスします:
Python
resp = client.reindex(
source={
"index": "my-index-000001",
"slice": {
"id": 0,
"max": 2
}
},
dest={
"index": "my-new-index-000001"
},
)
print(resp)
resp1 = client.reindex(
source={
"index": "my-index-000001",
"slice": {
"id": 1,
"max": 2
}
},
dest={
"index": "my-new-index-000001"
},
)
print(resp1)
Ruby
response = client.reindex(
body: {
source: {
index: 'my-index-000001',
slice: {
id: 0,
max: 2
}
},
dest: {
index: 'my-new-index-000001'
}
}
)
puts response
response = client.reindex(
body: {
source: {
index: 'my-index-000001',
slice: {
id: 1,
max: 2
}
},
dest: {
index: 'my-new-index-000001'
}
}
)
puts response
Js
const response = await client.reindex({
source: {
index: "my-index-000001",
slice: {
id: 0,
max: 2,
},
},
dest: {
index: "my-new-index-000001",
},
});
console.log(response);
const response1 = await client.reindex({
source: {
index: "my-index-000001",
slice: {
id: 1,
max: 2,
},
},
dest: {
index: "my-new-index-000001",
},
});
console.log(response1);
Console
POST _reindex
{
"source": {
"index": "my-index-000001",
"slice": {
"id": 0,
"max": 2
}
},
"dest": {
"index": "my-new-index-000001"
}
}
POST _reindex
{
"source": {
"index": "my-index-000001",
"slice": {
"id": 1,
"max": 2
}
},
"dest": {
"index": "my-new-index-000001"
}
}
これが機能することを確認できます:
Python
resp = client.indices.refresh()
print(resp)
resp1 = client.search(
index="my-new-index-000001",
size="0",
filter_path="hits.total",
)
print(resp1)
Ruby
response = client.indices.refresh
puts response
response = client.search(
index: 'my-new-index-000001',
size: 0,
filter_path: 'hits.total'
)
puts response
Js
const response = await client.indices.refresh();
console.log(response);
const response1 = await client.search({
index: "my-new-index-000001",
size: 0,
filter_path: "hits.total",
});
console.log(response1);
Console
GET _refresh
POST my-new-index-000001/_search?size=0&filter_path=hits.total
Console-Result
{
"hits": {
"total" : {
"value": 120,
"relation": "eq"
}
}
}
Automatic slicing
_reindex
を使用して、Sliced scrollを使用して自動的に並行化することもできます。_id
でスライスの数を指定します:
Python
resp = client.reindex(
slices="5",
refresh=True,
source={
"index": "my-index-000001"
},
dest={
"index": "my-new-index-000001"
},
)
print(resp)
Ruby
response = client.reindex(
slices: 5,
refresh: true,
body: {
source: {
index: 'my-index-000001'
},
dest: {
index: 'my-new-index-000001'
}
}
)
puts response
Js
const response = await client.reindex({
slices: 5,
refresh: "true",
source: {
index: "my-index-000001",
},
dest: {
index: "my-new-index-000001",
},
});
console.log(response);
Console
POST _reindex?slices=5&refresh
{
"source": {
"index": "my-index-000001"
},
"dest": {
"index": "my-new-index-000001"
}
}
これが機能することを確認できます:
Python
resp = client.search(
index="my-new-index-000001",
size="0",
filter_path="hits.total",
)
print(resp)
Ruby
response = client.search(
index: 'my-new-index-000001',
size: 0,
filter_path: 'hits.total'
)
puts response
Js
const response = await client.search({
index: "my-new-index-000001",
size: 0,
filter_path: "hits.total",
});
console.log(response);
Console
POST my-new-index-000001/_search?size=0&filter_path=hits.total
Console-Result
{
"hits": {
"total" : {
"value": 120,
"relation": "eq"
}
}
}
`````slices`````を`````_reindex`````に追加すると、上記のセクションで使用される手動プロセスが自動化され、サブリクエストが作成されます。これにはいくつかの特異性があります:
- これらのリクエストは、[タスクAPI](9f223278767f8ed0.md#docs-reindex-task-api)で確認できます。これらのサブリクエストは、`````slices`````を持つリクエストのタスクの「子」タスクです。
- `````slices`````を持つリクエストのタスクのステータスを取得すると、完了したスライスのステータスのみが含まれます。
- これらのサブリクエストは、キャンセルや再スロットリングなどのために個別にアドレス指定できます。
- `````slices`````を持つリクエストを再スロットリングすると、未完了のサブリクエストが比例して再スロットリングされます。
- `````slices`````を持つリクエストをキャンセルすると、各サブリクエストがキャンセルされます。
- `````slices`````の性質上、各サブリクエストはドキュメントの完全に均等な部分を取得しません。すべてのドキュメントが対象になりますが、一部のスライスは他のスライスよりも大きくなる可能性があります。大きなスライスは、より均等な分布を持つことが期待されます。
- `````requests_per_second`````や`````max_docs`````のようなパラメータは、`````slices`````を持つリクエストの各サブリクエストに比例して分配されます。これを上記の分布が不均等であるという点と組み合わせると、`````max_docs`````を`````slices`````と一緒に使用すると、正確に`````max_docs`````ドキュメントが再インデックスされるとは限らないことがわかります。
- 各サブリクエストは、ソースのわずかに異なるスナップショットを取得しますが、これらはすべてほぼ同時に取得されます。
#### Picking the number of slices
自動的にスライスする場合、`````slices`````を`````auto`````に設定すると、ほとんどのインデックスに対して合理的な数が選択されます。手動でスライスする場合や自動スライスを調整する場合は、次のガイドラインを使用します。
クエリパフォーマンスは、`````slices`````の数がインデックスのシャード数と等しいときに最も効率的です。その数が大きい場合(例:500)、`````slices`````が多すぎるとパフォーマンスが低下するため、低い数を選択します。`````slices`````をシャード数よりも高く設定しても、一般的に効率は向上せず、オーバーヘッドが追加されます。
インデックスパフォーマンスは、スライスの数に応じて利用可能なリソース全体で線形にスケールします。
クエリまたはインデックスパフォーマンスがランタイムを支配するかどうかは、再インデックスされるドキュメントとクラスターリソースによります。
### Reindex routing
デフォルトでは、`````_reindex`````がルーティングを持つドキュメントを見た場合、スクリプトによって変更されない限り、ルーティングは保持されます。これを変更するには、`````routing`````を`````dest`````リクエストに設定できます:
- `````keep
- 各マッチに送信されるバルクリクエストのルーティングをマッチのルーティングに設定します。これはデフォルト値です。
discard
- 各マッチに送信されるバルクリクエストのルーティングを
null
に設定します。 =<some text>
- 各マッチに送信されるバルクリクエストのルーティングを
=
の後のすべてのテキストに設定します。
たとえば、source
から会社名cat
のすべてのドキュメントをdest
にコピーし、ルーティングをcat
に設定するために、次のリクエストを使用できます。
Php
$params = [
'body' => [
'source' => [
'index' => 'source',
'query' => [
'match' => [
'company' => 'cat',
],
],
],
'dest' => [
'index' => 'dest',
'routing' => '=cat',
],
],
];
$response = $client->reindex($params);
Python
resp = client.reindex(
source={
"index": "source",
"query": {
"match": {
"company": "cat"
}
}
},
dest={
"index": "dest",
"routing": "=cat"
},
)
print(resp)
Ruby
response = client.reindex(
body: {
source: {
index: 'source',
query: {
match: {
company: 'cat'
}
}
},
dest: {
index: 'dest',
routing: '=cat'
}
}
)
puts response
Go
res, err := es.Reindex(
strings.NewReader(`{
"source": {
"index": "source",
"query": {
"match": {
"company": "cat"
}
}
},
"dest": {
"index": "dest",
"routing": "=cat"
}
}`))
fmt.Println(res, err)
Js
const response = await client.reindex({
source: {
index: "source",
query: {
match: {
company: "cat",
},
},
},
dest: {
index: "dest",
routing: "=cat",
},
});
console.log(response);
Console
POST _reindex
{
"source": {
"index": "source",
"query": {
"match": {
"company": "cat"
}
}
},
"dest": {
"index": "dest",
"routing": "=cat"
}
}
デフォルトでは、_reindex
は1000のスクロールバッチを使用します。size
フィールドをsource
要素で変更して、バッチサイズを変更できます:
Php
$params = [
'body' => [
'source' => [
'index' => 'source',
'size' => 100,
],
'dest' => [
'index' => 'dest',
'routing' => '=cat',
],
],
];
$response = $client->reindex($params);
Python
resp = client.reindex(
source={
"index": "source",
"size": 100
},
dest={
"index": "dest",
"routing": "=cat"
},
)
print(resp)
Ruby
response = client.reindex(
body: {
source: {
index: 'source',
size: 100
},
dest: {
index: 'dest',
routing: '=cat'
}
}
)
puts response
Go
res, err := es.Reindex(
strings.NewReader(`{
"source": {
"index": "source",
"size": 100
},
"dest": {
"index": "dest",
"routing": "=cat"
}
}`))
fmt.Println(res, err)
Js
const response = await client.reindex({
source: {
index: "source",
size: 100,
},
dest: {
index: "dest",
routing: "=cat",
},
});
console.log(response);
Console
POST _reindex
{
"source": {
"index": "source",
"size": 100
},
"dest": {
"index": "dest",
"routing": "=cat"
}
}
Reindex with an ingest pipeline
再インデックスは、pipeline
を次のように指定することで、インジェストパイプライン機能を使用することもできます:
Php
$params = [
'body' => [
'source' => [
'index' => 'source',
],
'dest' => [
'index' => 'dest',
'pipeline' => 'some_ingest_pipeline',
],
],
];
$response = $client->reindex($params);
Python
resp = client.reindex(
source={
"index": "source"
},
dest={
"index": "dest",
"pipeline": "some_ingest_pipeline"
},
)
print(resp)
Ruby
response = client.reindex(
body: {
source: {
index: 'source'
},
dest: {
index: 'dest',
pipeline: 'some_ingest_pipeline'
}
}
)
puts response
Go
res, err := es.Reindex(
strings.NewReader(`{
"source": {
"index": "source"
},
"dest": {
"index": "dest",
"pipeline": "some_ingest_pipeline"
}
}`))
fmt.Println(res, err)
Js
const response = await client.reindex({
source: {
index: "source",
},
dest: {
index: "dest",
pipeline: "some_ingest_pipeline",
},
});
console.log(response);
Console
POST _reindex
{
"source": {
"index": "source"
},
"dest": {
"index": "dest",
"pipeline": "some_ingest_pipeline"
}
}
Query parameters
refresh
- (オプション、ブール値)
true
の場合、リクエストは影響を受けるシャードを更新して、この操作を検索可能にします。デフォルトはfalse
です。 timeout
- (オプション、時間単位)各インデックス作成が次の操作を待機する期間:
- 自動インデックス作成
- 動的マッピングの更新
- アクティブシャードの待機
デフォルトは1m
(1分)です。これにより、Elasticsearchは失敗する前に少なくともタイムアウトを待機します。実際の待機時間は、特に複数の待機が発生する場合、長くなる可能性があります。
wait_for_active_shards
- (オプション、文字列)操作を進める前にアクティブでなければならないシャードのコピーの数。
all
またはインデックスのシャードの総数(number_of_replicas+1
)までの任意の正の整数に設定します。デフォルト:1、プライマリシャード。
アクティブシャードを参照してください。 wait_for_completion
- (オプション、ブール値)
true
の場合、リクエストは操作が完了するまでブロックされます。デフォルトはtrue
です。 requests_per_second
- (オプション、整数)このリクエストのスロットルをサブリクエストごとに秒で設定します。デフォルトは
-1
(スロットルなし)です。 require_alias
- (オプション、ブール値)
true
の場合、宛先はインデックスエイリアスでなければなりません。デフォルトはfalse
です。 scroll
- (オプション、時間単位)スクロール検索のためにインデックスの一貫したビューを維持する期間を指定します。
slices
- (オプション、整数)このタスクをいくつのスライスに分割するか。デフォルトは1で、タスクはサブタスクにスライスされません。
max_docs
- (オプション、整数)処理する最大ドキュメント数。デフォルトはすべてのドキュメントです。
scroll_size
以下の値に設定すると、操作の結果を取得するためにスクロールは使用されません。
Request body
conflicts
- (オプション、列挙型)
proceed
に設定すると、競合があっても再インデックスを続行します。デフォルトはabort
です。 max_docs
- (オプション、整数)再インデックスする最大ドキュメント数。
proceed
がmax_docs
に等しい場合、再インデックスはmax_docs
ドキュメントをターゲットに正常にインデックスするまで、またはソースクエリ内のすべてのドキュメントを通過するまで、ソースからsource
ドキュメントを再インデックスしようとする可能性があります。 index
query
- (必須、文字列)コピー元のデータストリーム、インデックス、またはエイリアスの名前。複数のソースから再インデックスするためにカンマ区切りのリストも受け入れます。
remote
- (オプション、クエリオブジェクト)Query DSLを使用して再インデックスするドキュメントを指定します。
host
username
- (オプション、文字列)リモートインスタンスのElasticsearchのURL。リモートからインデックスする場合は必須です。
password
- (オプション、文字列)リモートホストとの認証に使用するユーザー名。
socket_timeout
- (オプション、文字列)リモートホストとの認証に使用するパスワード。
connect_timeout
- (オプション、時間単位)リモートソケットの読み取りタイムアウト。デフォルトは30秒です。
headers
- (オプション、時間単位)リモート接続のタイムアウト。デフォルトは30秒です。
size
- (オプション、オブジェクト)リクエストのヘッダーを含むオブジェクト。
slice
- {オプション、整数)バッチごとにインデックスするドキュメントの数。リモートからインデックスする際に、バッチがヒープバッファ内に収まることを確認するために使用します。デフォルトは最大サイズ100MBです。
id
max
- (オプション、整数)手動スライスのスライスID。
sort
- (オプション、整数)スライスの総数。
<field>:<direction>
- (オプション、リスト)インデックスする前にソートするためのカンマ区切りの
max_docs
ペアのリスト。max_docs
と組み合わせて、どのドキュメントが再インデックスされるかを制御します。
Deprecated in 7.6.
再インデックスのソートは非推奨です。再インデックスでのソートは、ドキュメントを順序通りにインデックスすることが保証されておらず、再インデックスのさらなる開発(耐障害性やパフォーマンスの改善など)を妨げます。max_docs
と組み合わせて使用する場合は、代わりにクエリフィルターを使用することを検討してください。
_source
- (オプション、文字列)
true
の場合、すべてのソースフィールドを再インデックスします。選択したフィールドを再インデックスするためにリストに設定します。デフォルトはtrue
です。dest
index
- (必須、文字列)コピー先のデータストリーム、インデックス、またはインデックスエイリアスの名前。
version_type
- (オプション、列挙型)インデックス操作に使用するバージョン管理。有効な値:
internal
、external
、external_gt
、external_gte
。詳細についてはバージョンタイプを参照してください。 op_type
- (オプション、列挙型)存在しないドキュメントのみをインデックスするために作成に設定します(存在しない場合は置き換え)。有効な値:
index
、create
。デフォルトはindex
です。
データストリーム宛先に再インデックスするには、この引数はcreate
でなければなりません。 pipeline
- (オプション、文字列)使用するパイプラインの名前。
script
source
- (オプション、文字列)再インデックス時にドキュメントソースまたはメタデータを更新するために実行するスクリプト。
lang
- (オプション、列挙型)スクリプト言語:
painless
、expression
、mustache
、java
。詳細についてはScriptingを参照してください。
Response body
took
- (整数)全体の操作にかかったミリ秒の合計。
timed_out
- (ブール値)再インデックス中に実行されたリクエストのいずれかがタイムアウトした場合、このフラグは
true
に設定されます。 total
- (整数)正常に処理されたドキュメントの数。
updated
- (整数)正常に更新されたドキュメントの数。すなわち、同じIDのドキュメントが再インデックスによって更新される前にすでに存在していました。
created
- (整数)正常に作成されたドキュメントの数。
deleted
- (整数)正常に削除されたドキュメントの数。
batches
- (整数)再インデックスによって引き戻されたスクロール応答の数。
noops
- (整数)再インデックスのために使用されたスクリプトが
noop
の値をctx.op
に返したために無視されたドキュメントの数。 version_conflicts
- (整数)再インデックスがヒットしたバージョンの競合の数。
retries
- (整数)再インデックスによって試みられた再試行の数。
bulk
は再試行されたバルクアクションの数で、search
は再試行された検索アクションの数です。 throttled_millis
- (整数)
requests_per_second
に準拠するためにリクエストがスリープしたミリ秒数。 requests_per_second
- (整数)再インデックス中に実行されたリクエストの数。
throttled_until_millis
- (整数)このフィールドは、
_reindex
応答で常にゼロである必要があります。これは、タスクAPIを使用している場合にのみ意味を持ち、スロットルされたリクエストがrequests_per_second
に準拠するために次に実行される時間(エポックからのミリ秒)を示します。 failures
- (配列)プロセス中に回復不可能なエラーが発生した場合の失敗の配列。これが非空の場合、リクエストはこれらの失敗のために中止されました。再インデックスはバッチを使用して実装されており、いずれかの失敗が発生すると全体のプロセスが中止されますが、現在のバッチ内のすべての失敗は配列に収集されます。
conflicts
オプションを使用して、バージョンの競合で再インデックスが中止されないようにすることができます。
Examples
Reindex select documents with a query
クエリをsource
に追加することで、ドキュメントを制限できます。たとえば、次のリクエストは、user.id
がkimchy
のドキュメントのみをmy-new-index-000001
にコピーします:
Python
resp = client.reindex(
source={
"index": "my-index-000001",
"query": {
"term": {
"user.id": "kimchy"
}
}
},
dest={
"index": "my-new-index-000001"
},
)
print(resp)
Ruby
response = client.reindex(
body: {
source: {
index: 'my-index-000001',
query: {
term: {
'user.id' => 'kimchy'
}
}
},
dest: {
index: 'my-new-index-000001'
}
}
)
puts response
Js
const response = await client.reindex({
source: {
index: "my-index-000001",
query: {
term: {
"user.id": "kimchy",
},
},
},
dest: {
index: "my-new-index-000001",
},
});
console.log(response);
Console
POST _reindex
{
"source": {
"index": "my-index-000001",
"query": {
"term": {
"user.id": "kimchy"
}
}
},
"dest": {
"index": "my-new-index-000001"
}
}
Reindex select documents with max_docs
処理するドキュメントの数をmax_docs
を設定することで制限できます。たとえば、このリクエストは、my-index-000001
からmy-new-index-000001
に単一のドキュメントをコピーします:
Python
resp = client.reindex(
max_docs=1,
source={
"index": "my-index-000001"
},
dest={
"index": "my-new-index-000001"
},
)
print(resp)
Ruby
response = client.reindex(
body: {
max_docs: 1,
source: {
index: 'my-index-000001'
},
dest: {
index: 'my-new-index-000001'
}
}
)
puts response
Js
const response = await client.reindex({
max_docs: 1,
source: {
index: "my-index-000001",
},
dest: {
index: "my-new-index-000001",
},
});
console.log(response);
Console
POST _reindex
{
"max_docs": 1,
"source": {
"index": "my-index-000001"
},
"dest": {
"index": "my-new-index-000001"
}
}
Reindex from multiple sources
#### Python
``````python
resp = client.reindex(
source={
"index": [
"my-index-000001",
"my-index-000002"
]
},
dest={
"index": "my-new-index-000002"
},
)
print(resp)
`
Ruby
response = client.reindex(
body: {
source: {
index: [
'my-index-000001',
'my-index-000002'
]
},
dest: {
index: 'my-new-index-000002'
}
}
)
puts response
Js
const response = await client.reindex({
source: {
index: ["my-index-000001", "my-index-000002"],
},
dest: {
index: "my-new-index-000002",
},
});
console.log(response);
Console
POST _reindex
{
"source": {
"index": ["my-index-000001", "my-index-000002"]
},
"dest": {
"index": "my-new-index-000002"
}
}
再インデックスAPIはIDの衝突を処理しようとしないため、最後に書き込まれたドキュメントが「勝ち」ますが、順序は通常予測できないため、この動作に依存するのは良い考えではありません。代わりに、スクリプトを使用してIDが一意であることを確認してください。
Reindex select fields with a source filter
ソースフィルタリングを使用して、元のドキュメントのフィールドのサブセットを再インデックスできます。たとえば、次のリクエストは、各ドキュメントのuser.id
と_doc
フィールドのみを再インデックスします:
Python
resp = client.reindex(
source={
"index": "my-index-000001",
"_source": [
"user.id",
"_doc"
]
},
dest={
"index": "my-new-index-000001"
},
)
print(resp)
Ruby
response = client.reindex(
body: {
source: {
index: 'my-index-000001',
_source: [
'user.id',
'_doc'
]
},
dest: {
index: 'my-new-index-000001'
}
}
)
puts response
Js
const response = await client.reindex({
source: {
index: "my-index-000001",
_source: ["user.id", "_doc"],
},
dest: {
index: "my-new-index-000001",
},
});
console.log(response);
Console
POST _reindex
{
"source": {
"index": "my-index-000001",
"_source": ["user.id", "_doc"]
},
"dest": {
"index": "my-new-index-000001"
}
}
Reindex to change the name of a field
#### Python
``````python
resp = client.index(
index="my-index-000001",
id="1",
refresh=True,
document={
"text": "words words",
"flag": "foo"
},
)
print(resp)
`
Ruby
response = client.index(
index: 'my-index-000001',
id: 1,
refresh: true,
body: {
text: 'words words',
flag: 'foo'
}
)
puts response
Js
const response = await client.index({
index: "my-index-000001",
id: 1,
refresh: "true",
document: {
text: "words words",
flag: "foo",
},
});
console.log(response);
Console
POST my-index-000001/_doc/1?refresh
{
"text": "words words",
"flag": "foo"
}
しかし、flag
という名前が気に入らず、tag
に置き換えたいとします。_reindex
が他のインデックスを作成できます:
Python
resp = client.reindex(
source={
"index": "my-index-000001"
},
dest={
"index": "my-new-index-000001"
},
script={
"source": "ctx._source.tag = ctx._source.remove(\"flag\")"
},
)
print(resp)
Ruby
response = client.reindex(
body: {
source: {
index: 'my-index-000001'
},
dest: {
index: 'my-new-index-000001'
},
script: {
source: 'ctx._source.tag = ctx._source.remove("flag")'
}
}
)
puts response
Js
const response = await client.reindex({
source: {
index: "my-index-000001",
},
dest: {
index: "my-new-index-000001",
},
script: {
source: 'ctx._source.tag = ctx._source.remove("flag")',
},
});
console.log(response);
Console
POST _reindex
{
"source": {
"index": "my-index-000001"
},
"dest": {
"index": "my-new-index-000001"
},
"script": {
"source": "ctx._source.tag = ctx._source.remove(\"flag\")"
}
}
新しいドキュメントを取得できます:
Python
resp = client.get(
index="my-new-index-000001",
id="1",
)
print(resp)
Ruby
response = client.get(
index: 'my-new-index-000001',
id: 1
)
puts response
Js
const response = await client.get({
index: "my-new-index-000001",
id: 1,
});
console.log(response);
Console
GET my-new-index-000001/_doc/1
コンソール-結果
{
"found": true,
"_id": "1",
"_index": "my-new-index-000001",
"_version": 1,
"_seq_no": 44,
"_primary_term": 1,
"_source": {
"text": "words words",
"tag": "foo"
}
}
Reindex daily indices
_reindex
を Painless と組み合わせて使用することで、日次インデックスを再インデックス化し、既存のドキュメントに新しいテンプレートを適用できます。
ドキュメントを含むインデックスがあると仮定します:
Php
$params = [
'index' => 'metricbeat-2016.05.30',
'id' => '1',
'body' => [
'system.cpu.idle.pct' => 0.908,
],
];
$response = $client->index($params);
$params = [
'index' => 'metricbeat-2016.05.31',
'id' => '1',
'body' => [
'system.cpu.idle.pct' => 0.105,
],
];
$response = $client->index($params);
Python
resp = client.index(
index="metricbeat-2016.05.30",
id="1",
refresh=True,
document={
"system.cpu.idle.pct": 0.908
},
)
print(resp)
resp1 = client.index(
index="metricbeat-2016.05.31",
id="1",
refresh=True,
document={
"system.cpu.idle.pct": 0.105
},
)
print(resp1)
Ruby
response = client.index(
index: 'metricbeat-2016.05.30',
id: 1,
refresh: true,
body: {
'system.cpu.idle.pct' => 0.908
}
)
puts response
response = client.index(
index: 'metricbeat-2016.05.31',
id: 1,
refresh: true,
body: {
'system.cpu.idle.pct' => 0.105
}
)
puts response
Go
{
res, err := es.Index(
"metricbeat-2016.05.30",
strings.NewReader(`{
"system.cpu.idle.pct": 0.908
}`),
es.Index.WithDocumentID("1"),
es.Index.WithRefresh("true"),
es.Index.WithPretty(),
)
fmt.Println(res, err)
}
{
res, err := es.Index(
"metricbeat-2016.05.31",
strings.NewReader(`{
"system.cpu.idle.pct": 0.105
}`),
es.Index.WithDocumentID("1"),
es.Index.WithRefresh("true"),
es.Index.WithPretty(),
)
fmt.Println(res, err)
}
Js
const response = await client.index({
index: "metricbeat-2016.05.30",
id: 1,
refresh: "true",
document: {
"system.cpu.idle.pct": 0.908,
},
});
console.log(response);
const response1 = await client.index({
index: "metricbeat-2016.05.31",
id: 1,
refresh: "true",
document: {
"system.cpu.idle.pct": 0.105,
},
});
console.log(response1);
Console
PUT metricbeat-2016.05.30/_doc/1?refresh
{"system.cpu.idle.pct": 0.908}
PUT metricbeat-2016.05.31/_doc/1?refresh
{"system.cpu.idle.pct": 0.105}
metricbeat-*
インデックスの新しいテンプレートはすでに Elasticsearch にロードされていますが、新しく作成されたインデックスにのみ適用されます。Painless を使用して既存のドキュメントを再インデックス化し、新しいテンプレートを適用できます。
以下のスクリプトは、インデックス名から日付を抽出し、-1
を追加した新しいインデックスを作成します。metricbeat-2016.05.31
からのすべてのデータは metricbeat-2016.05.31-1
に再インデックス化されます。
Php
$params = [
'body' => [
'source' => [
'index' => 'metricbeat-*',
],
'dest' => [
'index' => 'metricbeat',
],
'script' => [
'lang' => 'painless',
'source' => 'ctx._index = \'metricbeat-\' + (ctx._index.substring(\'metricbeat-\'.length(), ctx._index.length())) + \'-1\'',
],
],
];
$response = $client->reindex($params);
Python
resp = client.reindex(
source={
"index": "metricbeat-*"
},
dest={
"index": "metricbeat"
},
script={
"lang": "painless",
"source": "ctx._index = 'metricbeat-' + (ctx._index.substring('metricbeat-'.length(), ctx._index.length())) + '-1'"
},
)
print(resp)
Ruby
response = client.reindex(
body: {
source: {
index: 'metricbeat-*'
},
dest: {
index: 'metricbeat'
},
script: {
lang: 'painless',
source: "ctx._index = 'metricbeat-' + (ctx._index.substring('metricbeat-'.length(), ctx._index.length())) + '-1'"
}
}
)
puts response
Go
res, err := es.Reindex(
strings.NewReader(`{
"source": {
"index": "metricbeat-*"
},
"dest": {
"index": "metricbeat"
},
"script": {
"lang": "painless",
"source": "ctx._index = 'metricbeat-' + (ctx._index.substring('metricbeat-'.length(), ctx._index.length())) + '-1'"
}
}`))
fmt.Println(res, err)
Js
const response = await client.reindex({
source: {
index: "metricbeat-*",
},
dest: {
index: "metricbeat",
},
script: {
lang: "painless",
source:
"ctx._index = 'metricbeat-' + (ctx._index.substring('metricbeat-'.length(), ctx._index.length())) + '-1'",
},
});
console.log(response);
Console
POST _reindex
{
"source": {
"index": "metricbeat-*"
},
"dest": {
"index": "metricbeat"
},
"script": {
"lang": "painless",
"source": "ctx._index = 'metricbeat-' + (ctx._index.substring('metricbeat-'.length(), ctx._index.length())) + '-1'"
}
}
以前の metricbeat インデックスからのすべてのドキュメントは、*-1
インデックスに見つかるようになりました。
Php
$params = [
'index' => 'metricbeat-2016.05.30-1',
'id' => '1',
];
$response = $client->get($params);
$params = [
'index' => 'metricbeat-2016.05.31-1',
'id' => '1',
];
$response = $client->get($params);
Python
resp = client.get(
index="metricbeat-2016.05.30-1",
id="1",
)
print(resp)
resp1 = client.get(
index="metricbeat-2016.05.31-1",
id="1",
)
print(resp1)
Ruby
response = client.get(
index: 'metricbeat-2016.05.30-1',
id: 1
)
puts response
response = client.get(
index: 'metricbeat-2016.05.31-1',
id: 1
)
puts response
Go
{
res, err := es.Get("metricbeat-2016.05.30-1", "1", es.Get.WithPretty())
fmt.Println(res, err)
}
{
res, err := es.Get("metricbeat-2016.05.31-1", "1", es.Get.WithPretty())
fmt.Println(res, err)
}
Js
const response = await client.get({
index: "metricbeat-2016.05.30-1",
id: 1,
});
console.log(response);
const response1 = await client.get({
index: "metricbeat-2016.05.31-1",
id: 1,
});
console.log(response1);
Console
GET metricbeat-2016.05.30-1/_doc/1
GET metricbeat-2016.05.31-1/_doc/1
以前の方法は、フィールド名の変更 と組み合わせて使用することもでき、既存のデータのみを新しいインデックスにロードし、必要に応じてフィールドの名前を変更できます。
Extract a random subset of the source
_reindex
を使用して、テスト用にソースのランダムなサブセットを抽出できます:
Python
resp = client.reindex(
max_docs=10,
source={
"index": "my-index-000001",
"query": {
"function_score": {
"random_score": {},
"min_score": 0.9
}
}
},
dest={
"index": "my-new-index-000001"
},
)
print(resp)
Ruby
response = client.reindex(
body: {
max_docs: 10,
source: {
index: 'my-index-000001',
query: {
function_score: {
random_score: {},
min_score: 0.9
}
}
},
dest: {
index: 'my-new-index-000001'
}
}
)
puts response
Js
const response = await client.reindex({
max_docs: 10,
source: {
index: "my-index-000001",
query: {
function_score: {
random_score: {},
min_score: 0.9,
},
},
},
dest: {
index: "my-new-index-000001",
},
});
console.log(response);
Console
POST _reindex
{
"max_docs": 10,
"source": {
"index": "my-index-000001",
"query": {
"function_score" : {
"random_score" : {},
"min_score" : 0.9
}
}
},
"dest": {
"index": "my-new-index-000001"
}
}
ソースから抽出されたデータの相対量に応じて min_score を調整する必要があるかもしれません。 |
Modify documents during reindexing
_update_by_query
と同様に、_reindex
はドキュメントを変更するスクリプトをサポートしています。_update_by_query
とは異なり、スクリプトはドキュメントのメタデータを変更することが許可されています。この例では、ソースドキュメントのバージョンを上げます:
Python
resp = client.reindex(
source={
"index": "my-index-000001"
},
dest={
"index": "my-new-index-000001",
"version_type": "external"
},
script={
"source": "if (ctx._source.foo == 'bar') {ctx._version++; ctx._source.remove('foo')}",
"lang": "painless"
},
)
print(resp)
Ruby
response = client.reindex(
body: {
source: {
index: 'my-index-000001'
},
dest: {
index: 'my-new-index-000001',
version_type: 'external'
},
script: {
source: "if (ctx._source.foo == 'bar') {ctx._version++; ctx._source.remove('foo')}",
lang: 'painless'
}
}
)
puts response
Js
const response = await client.reindex({
source: {
index: "my-index-000001",
},
dest: {
index: "my-new-index-000001",
version_type: "external",
},
script: {
source:
"if (ctx._source.foo == 'bar') {ctx._version++; ctx._source.remove('foo')}",
lang: "painless",
},
});
console.log(response);
Console
POST _reindex
{
"source": {
"index": "my-index-000001"
},
"dest": {
"index": "my-new-index-000001",
"version_type": "external"
},
"script": {
"source": "if (ctx._source.foo == 'bar') {ctx._version++; ctx._source.remove('foo')}",
"lang": "painless"
}
}
_update_by_query
と同様に、ctx.op
を設定して、宛先で実行される操作を変更できます:
noop
- スクリプトがドキュメントを宛先にインデックス化する必要がないと判断した場合は
ctx.op = "noop"
を設定します。この操作は、レスポンスボディ のnoop
カウンターに報告されます。 delete
- スクリプトがドキュメントを宛先から削除する必要があると判断した場合は
ctx.op = "delete"
を設定します。削除は、レスポンスボディ のdeleted
カウンターに報告されます。
ctx.op
に他の値を設定するとエラーが返され、ctx
の他のフィールドを設定してもエラーが返されます。
可能性を考えてみてください!ただし注意してください; 変更できるのは:
_id
_index
_version
_routing
_version
を null
に設定するか、ctx
マップからクリアすることは、インデックスリクエストでバージョンを送信しないのと同じです; それにより、ターゲットのバージョンや _reindex
リクエストで使用するバージョンに関係なく、ドキュメントが宛先で上書きされます。
Reindex from remote
リインデックスは、リモート Elasticsearch クラスターからの再インデックス化をサポートしています:
Python
resp = client.reindex(
source={
"remote": {
"host": "http://otherhost:9200",
"username": "user",
"password": "pass"
},
"index": "my-index-000001",
"query": {
"match": {
"test": "data"
}
}
},
dest={
"index": "my-new-index-000001"
},
)
print(resp)
Ruby
response = client.reindex(
body: {
source: {
remote: {
host: 'http://otherhost:9200',
username: 'user',
password: 'pass'
},
index: 'my-index-000001',
query: {
match: {
test: 'data'
}
}
},
dest: {
index: 'my-new-index-000001'
}
}
)
puts response
Js
const response = await client.reindex({
source: {
remote: {
host: "http://otherhost:9200",
username: "user",
password: "pass",
},
index: "my-index-000001",
query: {
match: {
test: "data",
},
},
},
dest: {
index: "my-new-index-000001",
},
});
console.log(response);
Console
POST _reindex
{
"source": {
"remote": {
"host": "http://otherhost:9200",
"username": "user",
"password": "pass"
},
"index": "my-index-000001",
"query": {
"match": {
"test": "data"
}
}
},
"dest": {
"index": "my-new-index-000001"
}
}
host
パラメータには、スキーム、ホスト、ポート (例: https://otherhost:9200
)、およびオプションのパス (例: https://otherhost:9200/proxy
) が含まれている必要があります。username
および password
パラメータはオプションであり、これらが存在する場合、_reindex
は基本認証を使用してリモート Elasticsearch ノードに接続します。基本認証を使用する場合は https
を使用してください。さもなければ、パスワードは平文で送信されます。https
接続の動作を構成するためのさまざまな 設定 が利用可能です。
Elastic Cloud を使用している場合、有効な API キーを使用してリモートクラスターに対して認証することも可能です:
Python
resp = client.reindex(
source={
"remote": {
"host": "http://otherhost:9200",
"headers": {
"Authorization": "ApiKey API_KEY_VALUE"
}
},
"index": "my-index-000001",
"query": {
"match": {
"test": "data"
}
}
},
dest={
"index": "my-new-index-000001"
},
)
print(resp)
Ruby
response = client.reindex(
body: {
source: {
remote: {
host: 'http://otherhost:9200',
headers: {
"Authorization": 'ApiKey API_KEY_VALUE'
}
},
index: 'my-index-000001',
query: {
match: {
test: 'data'
}
}
},
dest: {
index: 'my-new-index-000001'
}
}
)
puts response
Js
const response = await client.reindex({
source: {
remote: {
host: "http://otherhost:9200",
headers: {
Authorization: "ApiKey API_KEY_VALUE",
},
},
index: "my-index-000001",
query: {
match: {
test: "data",
},
},
},
dest: {
index: "my-new-index-000001",
},
});
console.log(response);
Console
POST _reindex
{
"source": {
"remote": {
"host": "http://otherhost:9200",
"headers": {
"Authorization": "ApiKey API_KEY_VALUE"
}
},
"index": "my-index-000001",
"query": {
"match": {
"test": "data"
}
}
},
"dest": {
"index": "my-new-index-000001"
}
}
リモートホストは、elasticsearch.yml
で reindex.remote.whitelist
プロパティを使用して明示的に許可する必要があります。許可されたリモート host
と port
の組み合わせのカンマ区切りリストに設定できます。スキームは無視され、ホストとポートのみが使用されます。例えば:
Yaml
reindex.remote.whitelist: [otherhost:9200, another:9200, 127.0.10.*:9200, localhost:*"]
許可されたホストのリストは、再インデックスを調整するノードで構成する必要があります。
この機能は、見つかる可能性のある任意のバージョンのリモートクラスターで機能するはずです。これにより、古いバージョンのクラスターから再インデックス化することで、任意のバージョンの Elasticsearch から現在のバージョンにアップグレードできるはずです。
Elasticsearch は、メジャーバージョン間の前方互換性をサポートしていません。たとえば、7.x クラスターから 6.x クラスターに再インデックス化することはできません。
古いバージョンの Elasticsearch に送信されたクエリを有効にするために、query
パラメータは検証や変更なしにリモートホストに直接送信されます。
リモートクラスターからの再インデックスは、手動または自動スライスをサポートしていません。
リモートサーバーからの再インデックス化は、デフォルトで最大サイズが 100mb のヒープ内バッファを使用します。リモートインデックスに非常に大きなドキュメントが含まれている場合は、より小さなバッチサイズを使用する必要があります。以下の例では、バッチサイズを 10
に設定しています。これは非常に非常に小さいです。
Console
POST _reindex
{
"source": {
"remote": {
"host": "http://otherhost:9200",
...
},
"index": "source",
"size": 10,
"query": {
"match": {
"test": "data"
}
}
},
"dest": {
"index": "dest"
}
}
リモート接続のソケット読み取りタイムアウトを socket_timeout
フィールドで設定し、接続タイムアウトを connect_timeout
フィールドで設定することも可能です。両方ともデフォルトで 30 秒です。この例では、ソケット読み取りタイムアウトを 1 分、接続タイムアウトを 10 秒に設定します:
コンソール
POST _reindex
{
"source": {
"remote": {
"host": "http://otherhost:9200",
...,
"socket_timeout": "1m",
"connect_timeout": "10s"
},
"index": "source",
"query": {
"match": {
"test": "data"
}
}
},
"dest": {
"index": "dest"
}
}
Configuring SSL parameters
リモートからの再インデックスは、構成可能な SSL 設定をサポートしています。これらは elasticsearch.yml
ファイルに指定する必要がありますが、セキュア設定は Elasticsearch キーストアに追加します。_reindex
リクエストの本文で SSL を構成することはできません。
次の設定がサポートされています:
reindex.ssl.certificate_authorities
- 信頼されるべき PEM エンコードされた証明書ファイルへのパスのリスト。
reindex.ssl.certificate_authorities
とreindex.ssl.truststore.path
の両方を指定することはできません。 reindex.ssl.truststore.path
- 信頼する証明書を含む Java キーストアファイルへのパス。このキーストアは「JKS」または「PKCS#12」形式である必要があります。
reindex.ssl.certificate_authorities
とreindex.ssl.truststore.path
の両方を指定することはできません。 reindex.ssl.truststore.password
- トラストストアのパスワード (
reindex.ssl.truststore.path
)。 [7.17.0] 7.17.0 で非推奨。代わりにreindex.ssl.truststore.secure_password
を使用してください。この設定はreindex.ssl.truststore.secure_password
と一緒に使用できません。 reindex.ssl.truststore.secure_password
(Secure)- トラストストアのパスワード (
reindex.ssl.truststore.path
)。この設定はreindex.ssl.truststore.password
と一緒に使用できません。 reindex.ssl.truststore.type
- トラストストアのタイプ (
reindex.ssl.truststore.path
)。jks
またはPKCS12
のいずれかである必要があります。トラストストアのパスが「.p12」、「.pfx」または「pkcs12」で終わる場合、この設定はPKCS12
にデフォルト設定されます。そうでない場合は、jks
にデフォルト設定されます。 reindex.ssl.verification_mode
- 中間者攻撃や証明書の偽造から保護するための検証の種類を示します。
full
(ホスト名と証明書パスを検証)、certificate
(証明書パスを検証するがホスト名は検証しない)、またはnone
(検証を行わない - 本番環境では強く推奨されません) のいずれかです。デフォルトはfull
です。 reindex.ssl.certificate
- HTTP クライアント認証に使用される PEM エンコードされた証明書 (または証明書チェーン) へのパスを指定します (リモートクラスターによって要求される場合)。この設定には
reindex.ssl.key
も設定する必要があります。reindex.ssl.certificate
とreindex.ssl.keystore.path
の両方を指定することはできません。 reindex.ssl.key
- クライアント認証に使用される証明書に関連付けられた PEM エンコードされた秘密鍵へのパス (
reindex.ssl.certificate
)。reindex.ssl.key
とreindex.ssl.keystore.path
の両方を指定することはできません。 reindex.ssl.key_passphrase
- 暗号化されている場合、PEM エンコードされた秘密鍵を復号化するためのパスフレーズ (
reindex.ssl.key
) を指定します。 [7.17.0] 7.17.0 で非推奨。代わりにreindex.ssl.secure_key_passphrase
を使用してください。この設定はreindex.ssl.secure_key_passphrase
と一緒に使用できません。 reindex.ssl.secure_key_passphrase
(Secure)- 暗号化されている場合、PEM エンコードされた秘密鍵を復号化するためのパスフレーズ (
reindex.ssl.key
) を指定します。reindex.ssl.key_passphrase
と一緒に使用できません。 reindex.ssl.keystore.path
- HTTP クライアント認証に使用される秘密鍵と証明書を含むキーストアへのパスを指定します (リモートクラスターによって要求される場合)。このキーストアは「JKS」または「PKCS#12」形式である必要があります。
reindex.ssl.key
とreindex.ssl.keystore.path
の両方を指定することはできません。 reindex.ssl.keystore.type
- キーストアのタイプ (
reindex.ssl.keystore.path
)。jks
またはPKCS12
のいずれかである必要があります。キーストアのパスが「.p12」、「.pfx」または「pkcs12」で終わる場合、この設定はPKCS12
にデフォルト設定されます。そうでない場合は、jks
にデフォルト設定されます。 reindex.ssl.keystore.password
- キーストアのパスワード (
reindex.ssl.keystore.path
)。 [7.17.0] 7.17.0 で非推奨。代わりにreindex.ssl.keystore.secure_password
を使用してください。この設定はreindex.ssl.keystore.secure_password
と一緒に使用できません。 reindex.ssl.keystore.secure_password
(Secure)- キーストアのパスワード (
reindex.ssl.keystore.path
)。この設定はreindex.ssl.keystore.password
と一緒に使用できません。 reindex.ssl.keystore.key_password
- キーストア内のキーのパスワード (
reindex.ssl.keystore.path
)。デフォルトはキーストアのパスワードです。 [7.17.0] 7.17.0 で非推奨。代わりにreindex.ssl.keystore.secure_key_password
を使用してください。この設定はreindex.ssl.keystore.secure_key_password
と一緒に使用できません。 reindex.ssl.keystore.secure_key_password
(Secure)- キーストア内のキーのパスワード (
reindex.ssl.keystore.path
)。デフォルトはキーストアのパスワードです。この設定はreindex.ssl.keystore.key_password
と一緒に使用できません。