mirror of
https://github.com/honeymoose/OpenSearch.git
synced 2025-03-27 02:18:42 +00:00
Change default backing index naming scheme
This commit is contained in:
parent
e7cc2448d2
commit
b501b282f8
@ -20,7 +20,7 @@ template>> containing:
|
|||||||
|
|
||||||
* A name or wildcard pattern for the data stream in the `index_patterns` property.
|
* A name or wildcard pattern for the data stream in the `index_patterns` property.
|
||||||
* A `data_stream` definition that contains the `timestamp_field` property.
|
* A `data_stream` definition that contains the `timestamp_field` property.
|
||||||
The `timestamp_field` must be the primary timestamp field
|
The `timestamp_field` must be the primary timestamp field
|
||||||
for the data source. This field must be included in every
|
for the data source. This field must be included in every
|
||||||
document indexed to the data stream.
|
document indexed to the data stream.
|
||||||
|
|
||||||
@ -78,7 +78,7 @@ Response:
|
|||||||
"failed" : 0,
|
"failed" : 0,
|
||||||
"successful" : 1
|
"successful" : 1
|
||||||
},
|
},
|
||||||
"_index" : "logs-foobar-000001",
|
"_index" : ".ds-logs-foobar-000001",
|
||||||
"_type" : "_doc",
|
"_type" : "_doc",
|
||||||
"_id" : "W0tpsmIBdwcYyG50zbta",
|
"_id" : "W0tpsmIBdwcYyG50zbta",
|
||||||
"_version" : 1,
|
"_version" : 1,
|
||||||
|
@ -76,11 +76,11 @@ The API returns the following response:
|
|||||||
"timestamp_field" : "@timestamp", <2>
|
"timestamp_field" : "@timestamp", <2>
|
||||||
"indices" : [ <3>
|
"indices" : [ <3>
|
||||||
{
|
{
|
||||||
"index_name" : "my-data-stream-000001",
|
"index_name" : ".ds-my-data-stream-000001",
|
||||||
"index_uuid" : "DXAE-xcCQTKF93bMm9iawA"
|
"index_uuid" : "DXAE-xcCQTKF93bMm9iawA"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"index_name" : "my-data-stream-000002",
|
"index_name" : ".ds-my-data-stream-000002",
|
||||||
"index_uuid" : "Wzxq0VhsQKyPxHhaK3WYAg"
|
"index_uuid" : "Wzxq0VhsQKyPxHhaK3WYAg"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
@ -256,7 +256,7 @@ POST /my-data-stream/_rollover <2>
|
|||||||
--------------------------------------------------
|
--------------------------------------------------
|
||||||
// TEST[continued]
|
// TEST[continued]
|
||||||
// TEST[setup:huge_twitter]
|
// TEST[setup:huge_twitter]
|
||||||
// TEST[s/# Add > 1000 documents to my-data-stream/POST _reindex?refresh\n{"source":{"index":"twitter"},"dest":{"index":"my-data-stream-000001"}}/]
|
// TEST[s/# Add > 1000 documents to my-data-stream/POST _reindex?refresh\n{"source":{"index":"twitter"},"dest":{"index":".ds-my-data-stream-000001"}}/]
|
||||||
<1> Creates a data stream called `my-data-stream` with one initial backing index
|
<1> Creates a data stream called `my-data-stream` with one initial backing index
|
||||||
named `my-data-stream-000001`.
|
named `my-data-stream-000001`.
|
||||||
<2> This request creates a new backing index, `my-data-stream-000002`, and adds
|
<2> This request creates a new backing index, `my-data-stream-000002`, and adds
|
||||||
@ -276,8 +276,8 @@ The API returns the following response:
|
|||||||
{
|
{
|
||||||
"acknowledged": true,
|
"acknowledged": true,
|
||||||
"shards_acknowledged": true,
|
"shards_acknowledged": true,
|
||||||
"old_index": "my-data-stream-000001", <1>
|
"old_index": ".ds-my-data-stream-000001", <1>
|
||||||
"new_index": "my-data-stream-000002", <2>
|
"new_index": ".ds-my-data-stream-000002", <2>
|
||||||
"rolled_over": true, <3>
|
"rolled_over": true, <3>
|
||||||
"dry_run": false, <4>
|
"dry_run": false, <4>
|
||||||
"conditions": { <5>
|
"conditions": { <5>
|
||||||
|
@ -23,8 +23,8 @@ setup:
|
|||||||
---
|
---
|
||||||
"Create data stream":
|
"Create data stream":
|
||||||
- skip:
|
- skip:
|
||||||
version: " - 7.8.99"
|
version: " - 7.99.99"
|
||||||
reason: "data streams only supported in 7.9+"
|
reason: "change to 7.8.99 after backport"
|
||||||
|
|
||||||
- do:
|
- do:
|
||||||
indices.create_data_stream:
|
indices.create_data_stream:
|
||||||
@ -43,12 +43,12 @@ setup:
|
|||||||
- match: { 0.timestamp_field: '@timestamp' }
|
- match: { 0.timestamp_field: '@timestamp' }
|
||||||
- match: { 0.generation: 1 }
|
- match: { 0.generation: 1 }
|
||||||
- length: { 0.indices: 1 }
|
- length: { 0.indices: 1 }
|
||||||
- match: { 0.indices.0.index_name: 'simple-data-stream1-000001' }
|
- match: { 0.indices.0.index_name: '.ds-simple-data-stream1-000001' }
|
||||||
- match: { 1.name: simple-data-stream2 }
|
- match: { 1.name: simple-data-stream2 }
|
||||||
- match: { 1.timestamp_field: '@timestamp2' }
|
- match: { 1.timestamp_field: '@timestamp2' }
|
||||||
- match: { 0.generation: 1 }
|
- match: { 0.generation: 1 }
|
||||||
- length: { 1.indices: 1 }
|
- length: { 1.indices: 1 }
|
||||||
- match: { 1.indices.0.index_name: 'simple-data-stream2-000001' }
|
- match: { 1.indices.0.index_name: '.ds-simple-data-stream2-000001' }
|
||||||
|
|
||||||
- do:
|
- do:
|
||||||
index:
|
index:
|
||||||
@ -64,7 +64,7 @@ setup:
|
|||||||
index: simple-data-stream1
|
index: simple-data-stream1
|
||||||
body: { query: { match_all: {} } }
|
body: { query: { match_all: {} } }
|
||||||
- length: { hits.hits: 1 }
|
- length: { hits.hits: 1 }
|
||||||
- match: { hits.hits.0._index: simple-data-stream1-000001 }
|
- match: { hits.hits.0._index: .ds-simple-data-stream1-000001 }
|
||||||
- match: { hits.hits.0._source.foo: 'bar' }
|
- match: { hits.hits.0._source.foo: 'bar' }
|
||||||
|
|
||||||
- do:
|
- do:
|
||||||
@ -95,8 +95,8 @@ setup:
|
|||||||
---
|
---
|
||||||
"Get data stream":
|
"Get data stream":
|
||||||
- skip:
|
- skip:
|
||||||
version: " - 7.8.99"
|
version: " - 7.99.99"
|
||||||
reason: "data streams only supported in 7.9+"
|
reason: "change to 7.8.99 after backport"
|
||||||
|
|
||||||
- do:
|
- do:
|
||||||
indices.create_data_stream:
|
indices.create_data_stream:
|
||||||
@ -160,8 +160,8 @@ setup:
|
|||||||
---
|
---
|
||||||
"Delete data stream with backing indices":
|
"Delete data stream with backing indices":
|
||||||
- skip:
|
- skip:
|
||||||
version: " - 7.8.99"
|
version: " - 7.99.99"
|
||||||
reason: data streams only supported in 7.9+
|
reason: "change to 7.8.99 after backport"
|
||||||
|
|
||||||
- do:
|
- do:
|
||||||
indices.create_data_stream:
|
indices.create_data_stream:
|
||||||
@ -178,10 +178,10 @@ setup:
|
|||||||
|
|
||||||
- do:
|
- do:
|
||||||
indices.get:
|
indices.get:
|
||||||
index: ['simple-data-stream1-000001', 'test_index']
|
index: ['.ds-simple-data-stream1-000001', 'test_index']
|
||||||
|
|
||||||
- is_true: test_index.settings
|
- is_true: test_index.settings
|
||||||
- is_true: simple-data-stream1-000001.settings
|
- is_true: \.ds-simple-data-stream1-000001.settings
|
||||||
|
|
||||||
- do:
|
- do:
|
||||||
indices.get_data_stream: {}
|
indices.get_data_stream: {}
|
||||||
@ -189,7 +189,7 @@ setup:
|
|||||||
- match: { 0.timestamp_field: '@timestamp' }
|
- match: { 0.timestamp_field: '@timestamp' }
|
||||||
- match: { 0.generation: 1 }
|
- match: { 0.generation: 1 }
|
||||||
- length: { 0.indices: 1 }
|
- length: { 0.indices: 1 }
|
||||||
- match: { 0.indices.0.index_name: 'simple-data-stream1-000001' }
|
- match: { 0.indices.0.index_name: '.ds-simple-data-stream1-000001' }
|
||||||
|
|
||||||
- do:
|
- do:
|
||||||
indices.delete_data_stream:
|
indices.delete_data_stream:
|
||||||
@ -199,4 +199,4 @@ setup:
|
|||||||
- do:
|
- do:
|
||||||
catch: missing
|
catch: missing
|
||||||
indices.get:
|
indices.get:
|
||||||
index: "simple-data-stream1-000001"
|
index: ".ds-simple-data-stream1-000001"
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
---
|
---
|
||||||
"Test apis that do not supported data streams":
|
"Test apis that do not supported data streams":
|
||||||
- skip:
|
- skip:
|
||||||
version: " - 7.8.99"
|
version: " - 7.99.99"
|
||||||
reason: "data streams only supported in 7.9+"
|
reason: "change to 7.8.99 after backport"
|
||||||
features: allowed_warnings
|
features: allowed_warnings
|
||||||
|
|
||||||
- do:
|
- do:
|
||||||
@ -25,14 +25,14 @@
|
|||||||
index: logs-foobar
|
index: logs-foobar
|
||||||
refresh: true
|
refresh: true
|
||||||
body: { foo: bar }
|
body: { foo: bar }
|
||||||
- match: {_index: logs-foobar-000001}
|
- match: {_index: .ds-logs-foobar-000001}
|
||||||
|
|
||||||
- do:
|
- do:
|
||||||
search:
|
search:
|
||||||
index: logs-foobar
|
index: logs-foobar
|
||||||
body: { query: { match_all: {} } }
|
body: { query: { match_all: {} } }
|
||||||
- length: { hits.hits: 1 }
|
- length: { hits.hits: 1 }
|
||||||
- match: { hits.hits.0._index: logs-foobar-000001 }
|
- match: { hits.hits.0._index: .ds-logs-foobar-000001 }
|
||||||
- match: { hits.hits.0._source.foo: 'bar' }
|
- match: { hits.hits.0._source.foo: 'bar' }
|
||||||
|
|
||||||
- do:
|
- do:
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
---
|
---
|
||||||
"Put index template":
|
"Put index template":
|
||||||
- skip:
|
- skip:
|
||||||
version: " - 7.8.99"
|
version: " - 7.99.99"
|
||||||
reason: "data streams supported from 7.9"
|
reason: "change to 7.8.99 after backport"
|
||||||
features: allowed_warnings
|
features: allowed_warnings
|
||||||
|
|
||||||
- do:
|
- do:
|
||||||
@ -34,7 +34,7 @@
|
|||||||
index: logs-foobar
|
index: logs-foobar
|
||||||
body: { query: { match_all: {} } }
|
body: { query: { match_all: {} } }
|
||||||
- length: { hits.hits: 1 }
|
- length: { hits.hits: 1 }
|
||||||
- match: { hits.hits.0._index: logs-foobar-000001 }
|
- match: { hits.hits.0._index: .ds-logs-foobar-000001 }
|
||||||
- match: { hits.hits.0._source.foo: 'bar' }
|
- match: { hits.hits.0._source.foo: 'bar' }
|
||||||
|
|
||||||
- do:
|
- do:
|
||||||
@ -43,7 +43,7 @@
|
|||||||
- match: { 0.name: logs-foobar }
|
- match: { 0.name: logs-foobar }
|
||||||
- match: { 0.timestamp_field: 'timestamp' }
|
- match: { 0.timestamp_field: 'timestamp' }
|
||||||
- length: { 0.indices: 1 }
|
- length: { 0.indices: 1 }
|
||||||
- match: { 0.indices.0.index_name: 'logs-foobar-000001' }
|
- match: { 0.indices.0.index_name: '.ds-logs-foobar-000001' }
|
||||||
|
|
||||||
- do:
|
- do:
|
||||||
indices.delete_data_stream:
|
indices.delete_data_stream:
|
||||||
|
@ -31,9 +31,9 @@ teardown:
|
|||||||
- do:
|
- do:
|
||||||
indices.get:
|
indices.get:
|
||||||
index: logs-foobar
|
index: logs-foobar
|
||||||
- is_true: logs-foobar-000001
|
- is_true: \.ds-logs-foobar-000001
|
||||||
- is_false: logs-foobar
|
- is_false: logs-foobar
|
||||||
- match: { logs-foobar-000001.settings.index.number_of_shards: '1' }
|
- match: { \.ds-logs-foobar-000001.settings.index.number_of_shards: '1' }
|
||||||
|
|
||||||
---
|
---
|
||||||
"Verify get mapping api":
|
"Verify get mapping api":
|
||||||
@ -44,5 +44,5 @@ teardown:
|
|||||||
- do:
|
- do:
|
||||||
indices.get_mapping:
|
indices.get_mapping:
|
||||||
index: logs-foobar
|
index: logs-foobar
|
||||||
- is_true: logs-foobar-000001.mappings
|
- is_true: \.ds-logs-foobar-000001.mappings
|
||||||
- is_false: logs-foobar.mappings
|
- is_false: \.ds-logs-foobar.mappings
|
||||||
|
@ -15,7 +15,7 @@ setup:
|
|||||||
"Delete backing index on data stream":
|
"Delete backing index on data stream":
|
||||||
- skip:
|
- skip:
|
||||||
version: " - 7.99.99"
|
version: " - 7.99.99"
|
||||||
reason: "mute bwc until backported"
|
reason: "change to 7.8.99 after backport"
|
||||||
|
|
||||||
- do:
|
- do:
|
||||||
indices.create_data_stream:
|
indices.create_data_stream:
|
||||||
@ -27,25 +27,25 @@ setup:
|
|||||||
indices.rollover:
|
indices.rollover:
|
||||||
alias: "simple-data-stream"
|
alias: "simple-data-stream"
|
||||||
|
|
||||||
- match: { old_index: simple-data-stream-000001 }
|
- match: { old_index: .ds-simple-data-stream-000001 }
|
||||||
- match: { new_index: simple-data-stream-000002 }
|
- match: { new_index: .ds-simple-data-stream-000002 }
|
||||||
- match: { rolled_over: true }
|
- match: { rolled_over: true }
|
||||||
- match: { dry_run: false }
|
- match: { dry_run: false }
|
||||||
|
|
||||||
# ensure new index is created
|
# ensure new index is created
|
||||||
- do:
|
- do:
|
||||||
indices.exists:
|
indices.exists:
|
||||||
index: simple-data-stream-000002
|
index: .ds-simple-data-stream-000002
|
||||||
|
|
||||||
- is_true: ''
|
- is_true: ''
|
||||||
|
|
||||||
- do:
|
- do:
|
||||||
indices.delete:
|
indices.delete:
|
||||||
index: simple-data-stream-000001
|
index: .ds-simple-data-stream-000001
|
||||||
|
|
||||||
- do:
|
- do:
|
||||||
indices.exists:
|
indices.exists:
|
||||||
index: simple-data-stream-000001
|
index: .ds-simple-data-stream-000001
|
||||||
|
|
||||||
- is_false: ''
|
- is_false: ''
|
||||||
|
|
||||||
@ -56,7 +56,7 @@ setup:
|
|||||||
- match: { 0.timestamp_field: '@timestamp' }
|
- match: { 0.timestamp_field: '@timestamp' }
|
||||||
- match: { 0.generation: 2 }
|
- match: { 0.generation: 2 }
|
||||||
- length: { 0.indices: 1 }
|
- length: { 0.indices: 1 }
|
||||||
- match: { 0.indices.0.index_name: 'simple-data-stream-000002' }
|
- match: { 0.indices.0.index_name: '.ds-simple-data-stream-000002' }
|
||||||
|
|
||||||
- do:
|
- do:
|
||||||
indices.delete_data_stream:
|
indices.delete_data_stream:
|
||||||
@ -79,26 +79,26 @@ setup:
|
|||||||
indices.rollover:
|
indices.rollover:
|
||||||
alias: "simple-data-stream"
|
alias: "simple-data-stream"
|
||||||
|
|
||||||
- match: { old_index: simple-data-stream-000001 }
|
- match: { old_index: .ds-simple-data-stream-000001 }
|
||||||
- match: { new_index: simple-data-stream-000002 }
|
- match: { new_index: .ds-simple-data-stream-000002 }
|
||||||
- match: { rolled_over: true }
|
- match: { rolled_over: true }
|
||||||
- match: { dry_run: false }
|
- match: { dry_run: false }
|
||||||
|
|
||||||
# ensure new index is created
|
# ensure new index is created
|
||||||
- do:
|
- do:
|
||||||
indices.exists:
|
indices.exists:
|
||||||
index: simple-data-stream-000002
|
index: .ds-simple-data-stream-000002
|
||||||
|
|
||||||
- is_true: ''
|
- is_true: ''
|
||||||
|
|
||||||
- do:
|
- do:
|
||||||
catch: bad_request
|
catch: bad_request
|
||||||
indices.delete:
|
indices.delete:
|
||||||
index: simple-data-stream-000002
|
index: .ds-simple-data-stream-000002
|
||||||
|
|
||||||
- do:
|
- do:
|
||||||
indices.exists:
|
indices.exists:
|
||||||
index: simple-data-stream-000002
|
index: .ds-simple-data-stream-000002
|
||||||
|
|
||||||
- is_true: ''
|
- is_true: ''
|
||||||
|
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
---
|
---
|
||||||
"Get backing indices for data stream":
|
"Get backing indices for data stream":
|
||||||
- skip:
|
- skip:
|
||||||
version: " - 7.9.99"
|
version: " - 7.99.99"
|
||||||
reason: "data streams only supported in 7.9+"
|
reason: "change to 7.8.99 after backport"
|
||||||
features: allowed_warnings
|
features: allowed_warnings
|
||||||
|
|
||||||
- do:
|
- do:
|
||||||
@ -30,11 +30,11 @@
|
|||||||
|
|
||||||
- do:
|
- do:
|
||||||
indices.get:
|
indices.get:
|
||||||
index: ['data-stream1-000001', 'test_index']
|
index: ['.ds-data-stream1-000001', 'test_index']
|
||||||
|
|
||||||
- is_true: data-stream1-000001.settings
|
- is_true: \.ds-data-stream1-000001.settings
|
||||||
- is_true: data-stream1-000001.data_stream
|
- is_true: \.ds-data-stream1-000001.data_stream
|
||||||
- match: { data-stream1-000001.data_stream: data-stream1 }
|
- match: { \.ds-data-stream1-000001.data_stream: data-stream1 }
|
||||||
- is_true: test_index.settings
|
- is_true: test_index.settings
|
||||||
- is_false: test_index.data_stream
|
- is_false: test_index.data_stream
|
||||||
|
|
||||||
|
@ -144,7 +144,7 @@
|
|||||||
- do:
|
- do:
|
||||||
catch: bad_request
|
catch: bad_request
|
||||||
indices.close:
|
indices.close:
|
||||||
index: "simple-data-stream1-000001"
|
index: ".ds-simple-data-stream1-000001"
|
||||||
|
|
||||||
- do:
|
- do:
|
||||||
indices.delete_data_stream:
|
indices.delete_data_stream:
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
"Roll over a data stream":
|
"Roll over a data stream":
|
||||||
- skip:
|
- skip:
|
||||||
version: " - 7.99.99"
|
version: " - 7.99.99"
|
||||||
reason: "mute bwc until backported"
|
reason: "change to 7.8.99 after backport"
|
||||||
features: allowed_warnings
|
features: allowed_warnings
|
||||||
|
|
||||||
- do:
|
- do:
|
||||||
@ -25,15 +25,15 @@
|
|||||||
indices.rollover:
|
indices.rollover:
|
||||||
alias: "data-stream-for-rollover"
|
alias: "data-stream-for-rollover"
|
||||||
|
|
||||||
- match: { old_index: data-stream-for-rollover-000001 }
|
- match: { old_index: .ds-data-stream-for-rollover-000001 }
|
||||||
- match: { new_index: data-stream-for-rollover-000002 }
|
- match: { new_index: .ds-data-stream-for-rollover-000002 }
|
||||||
- match: { rolled_over: true }
|
- match: { rolled_over: true }
|
||||||
- match: { dry_run: false }
|
- match: { dry_run: false }
|
||||||
|
|
||||||
# ensure new index is created
|
# ensure new index is created
|
||||||
- do:
|
- do:
|
||||||
indices.exists:
|
indices.exists:
|
||||||
index: data-stream-for-rollover-000002
|
index: .ds-data-stream-for-rollover-000002
|
||||||
|
|
||||||
- is_true: ''
|
- is_true: ''
|
||||||
|
|
||||||
@ -44,8 +44,8 @@
|
|||||||
- match: { 0.timestamp_field: '@timestamp' }
|
- match: { 0.timestamp_field: '@timestamp' }
|
||||||
- match: { 0.generation: 2 }
|
- match: { 0.generation: 2 }
|
||||||
- length: { 0.indices: 2 }
|
- length: { 0.indices: 2 }
|
||||||
- match: { 0.indices.0.index_name: 'data-stream-for-rollover-000001' }
|
- match: { 0.indices.0.index_name: '.ds-data-stream-for-rollover-000001' }
|
||||||
- match: { 0.indices.1.index_name: 'data-stream-for-rollover-000002' }
|
- match: { 0.indices.1.index_name: '.ds-data-stream-for-rollover-000002' }
|
||||||
|
|
||||||
- do:
|
- do:
|
||||||
indices.delete_data_stream:
|
indices.delete_data_stream:
|
||||||
|
@ -107,20 +107,24 @@ public class DataStreamIT extends ESIntegTestCase {
|
|||||||
assertThat(getDataStreamResponse.getDataStreams().get(0).getName(), equalTo("metrics-bar"));
|
assertThat(getDataStreamResponse.getDataStreams().get(0).getName(), equalTo("metrics-bar"));
|
||||||
assertThat(getDataStreamResponse.getDataStreams().get(0).getTimeStampField(), equalTo("@timestamp2"));
|
assertThat(getDataStreamResponse.getDataStreams().get(0).getTimeStampField(), equalTo("@timestamp2"));
|
||||||
assertThat(getDataStreamResponse.getDataStreams().get(0).getIndices().size(), equalTo(1));
|
assertThat(getDataStreamResponse.getDataStreams().get(0).getIndices().size(), equalTo(1));
|
||||||
assertThat(getDataStreamResponse.getDataStreams().get(0).getIndices().get(0).getName(), equalTo("metrics-bar-000001"));
|
assertThat(getDataStreamResponse.getDataStreams().get(0).getIndices().get(0).getName(),
|
||||||
|
equalTo(DataStream.getDefaultBackingIndexName("metrics-bar", 1)));
|
||||||
assertThat(getDataStreamResponse.getDataStreams().get(1).getName(), equalTo("metrics-foo"));
|
assertThat(getDataStreamResponse.getDataStreams().get(1).getName(), equalTo("metrics-foo"));
|
||||||
assertThat(getDataStreamResponse.getDataStreams().get(1).getTimeStampField(), equalTo("@timestamp1"));
|
assertThat(getDataStreamResponse.getDataStreams().get(1).getTimeStampField(), equalTo("@timestamp1"));
|
||||||
assertThat(getDataStreamResponse.getDataStreams().get(1).getIndices().size(), equalTo(1));
|
assertThat(getDataStreamResponse.getDataStreams().get(1).getIndices().size(), equalTo(1));
|
||||||
assertThat(getDataStreamResponse.getDataStreams().get(1).getIndices().get(0).getName(), equalTo("metrics-foo-000001"));
|
assertThat(getDataStreamResponse.getDataStreams().get(1).getIndices().get(0).getName(),
|
||||||
|
equalTo(DataStream.getDefaultBackingIndexName("metrics-foo", 1)));
|
||||||
|
|
||||||
|
String backingIndex = DataStream.getDefaultBackingIndexName("metrics-bar", 1);
|
||||||
GetIndexResponse getIndexResponse =
|
GetIndexResponse getIndexResponse =
|
||||||
client().admin().indices().getIndex(new GetIndexRequest().indices("metrics-bar-000001")).actionGet();
|
client().admin().indices().getIndex(new GetIndexRequest().indices(backingIndex)).actionGet();
|
||||||
assertThat(getIndexResponse.getSettings().get("metrics-bar-000001"), notNullValue());
|
assertThat(getIndexResponse.getSettings().get(backingIndex), notNullValue());
|
||||||
assertThat(getIndexResponse.getSettings().get("metrics-bar-000001").getAsBoolean("index.hidden", null), is(true));
|
assertThat(getIndexResponse.getSettings().get(backingIndex).getAsBoolean("index.hidden", null), is(true));
|
||||||
|
|
||||||
getIndexResponse = client().admin().indices().getIndex(new GetIndexRequest().indices("metrics-foo-000001")).actionGet();
|
backingIndex = DataStream.getDefaultBackingIndexName("metrics-foo", 1);
|
||||||
assertThat(getIndexResponse.getSettings().get("metrics-foo-000001"), notNullValue());
|
getIndexResponse = client().admin().indices().getIndex(new GetIndexRequest().indices(backingIndex)).actionGet();
|
||||||
assertThat(getIndexResponse.getSettings().get("metrics-foo-000001").getAsBoolean("index.hidden", null), is(true));
|
assertThat(getIndexResponse.getSettings().get(backingIndex), notNullValue());
|
||||||
|
assertThat(getIndexResponse.getSettings().get(backingIndex).getAsBoolean("index.hidden", null), is(true));
|
||||||
|
|
||||||
int numDocsBar = randomIntBetween(2, 16);
|
int numDocsBar = randomIntBetween(2, 16);
|
||||||
indexDocs("metrics-bar", numDocsBar);
|
indexDocs("metrics-bar", numDocsBar);
|
||||||
@ -131,20 +135,22 @@ public class DataStreamIT extends ESIntegTestCase {
|
|||||||
verifyDocs("metrics-foo", numDocsFoo, 1, 1);
|
verifyDocs("metrics-foo", numDocsFoo, 1, 1);
|
||||||
|
|
||||||
RolloverResponse rolloverResponse = client().admin().indices().rolloverIndex(new RolloverRequest("metrics-foo", null)).get();
|
RolloverResponse rolloverResponse = client().admin().indices().rolloverIndex(new RolloverRequest("metrics-foo", null)).get();
|
||||||
assertThat(rolloverResponse.getNewIndex(), equalTo("metrics-foo-000002"));
|
assertThat(rolloverResponse.getNewIndex(), equalTo(DataStream.getDefaultBackingIndexName("metrics-foo", 2)));
|
||||||
assertTrue(rolloverResponse.isRolledOver());
|
assertTrue(rolloverResponse.isRolledOver());
|
||||||
|
|
||||||
rolloverResponse = client().admin().indices().rolloverIndex(new RolloverRequest("metrics-bar", null)).get();
|
rolloverResponse = client().admin().indices().rolloverIndex(new RolloverRequest("metrics-bar", null)).get();
|
||||||
assertThat(rolloverResponse.getNewIndex(), equalTo("metrics-bar-000002"));
|
assertThat(rolloverResponse.getNewIndex(), equalTo(DataStream.getDefaultBackingIndexName("metrics-bar", 2)));
|
||||||
assertTrue(rolloverResponse.isRolledOver());
|
assertTrue(rolloverResponse.isRolledOver());
|
||||||
|
|
||||||
getIndexResponse = client().admin().indices().getIndex(new GetIndexRequest().indices("metrics-foo-000002")).actionGet();
|
backingIndex = DataStream.getDefaultBackingIndexName("metrics-foo", 2);
|
||||||
assertThat(getIndexResponse.getSettings().get("metrics-foo-000002"), notNullValue());
|
getIndexResponse = client().admin().indices().getIndex(new GetIndexRequest().indices(backingIndex)).actionGet();
|
||||||
assertThat(getIndexResponse.getSettings().get("metrics-foo-000002").getAsBoolean("index.hidden", null), is(true));
|
assertThat(getIndexResponse.getSettings().get(backingIndex), notNullValue());
|
||||||
|
assertThat(getIndexResponse.getSettings().get(backingIndex).getAsBoolean("index.hidden", null), is(true));
|
||||||
|
|
||||||
getIndexResponse = client().admin().indices().getIndex(new GetIndexRequest().indices("metrics-bar-000002")).actionGet();
|
backingIndex = DataStream.getDefaultBackingIndexName("metrics-bar", 2);
|
||||||
assertThat(getIndexResponse.getSettings().get("metrics-bar-000002"), notNullValue());
|
getIndexResponse = client().admin().indices().getIndex(new GetIndexRequest().indices(backingIndex)).actionGet();
|
||||||
assertThat(getIndexResponse.getSettings().get("metrics-bar-000002").getAsBoolean("index.hidden", null), is(true));
|
assertThat(getIndexResponse.getSettings().get(backingIndex), notNullValue());
|
||||||
|
assertThat(getIndexResponse.getSettings().get(backingIndex).getAsBoolean("index.hidden", null), is(true));
|
||||||
|
|
||||||
int numDocsBar2 = randomIntBetween(2, 16);
|
int numDocsBar2 = randomIntBetween(2, 16);
|
||||||
indexDocs("metrics-bar", numDocsBar2);
|
indexDocs("metrics-bar", numDocsBar2);
|
||||||
@ -160,13 +166,17 @@ public class DataStreamIT extends ESIntegTestCase {
|
|||||||
assertThat(getDataStreamResponse.getDataStreams().size(), equalTo(0));
|
assertThat(getDataStreamResponse.getDataStreams().size(), equalTo(0));
|
||||||
|
|
||||||
expectThrows(IndexNotFoundException.class,
|
expectThrows(IndexNotFoundException.class,
|
||||||
() -> client().admin().indices().getIndex(new GetIndexRequest().indices("metrics-bar-000001")).actionGet());
|
() -> client().admin().indices().getIndex(new GetIndexRequest().indices(
|
||||||
|
DataStream.getDefaultBackingIndexName("metrics-bar", 1))).actionGet());
|
||||||
expectThrows(IndexNotFoundException.class,
|
expectThrows(IndexNotFoundException.class,
|
||||||
() -> client().admin().indices().getIndex(new GetIndexRequest().indices("metrics-bar-000002")).actionGet());
|
() -> client().admin().indices().getIndex(new GetIndexRequest().indices(
|
||||||
|
DataStream.getDefaultBackingIndexName("metrics-bar", 2))).actionGet());
|
||||||
expectThrows(IndexNotFoundException.class,
|
expectThrows(IndexNotFoundException.class,
|
||||||
() -> client().admin().indices().getIndex(new GetIndexRequest().indices("metrics-foo-000001")).actionGet());
|
() -> client().admin().indices().getIndex(new GetIndexRequest().indices(
|
||||||
|
DataStream.getDefaultBackingIndexName("metrics-foo", 1))).actionGet());
|
||||||
expectThrows(IndexNotFoundException.class,
|
expectThrows(IndexNotFoundException.class,
|
||||||
() -> client().admin().indices().getIndex(new GetIndexRequest().indices("metrics-foo-000002")).actionGet());
|
() -> client().admin().indices().getIndex(new GetIndexRequest().indices(
|
||||||
|
DataStream.getDefaultBackingIndexName("metrics-foo", 2))).actionGet());
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testOtherWriteOps() throws Exception {
|
public void testOtherWriteOps() throws Exception {
|
||||||
@ -207,14 +217,14 @@ public class DataStreamIT extends ESIntegTestCase {
|
|||||||
IndexRequest indexRequest = new IndexRequest(dataStreamName).source("{}", XContentType.JSON)
|
IndexRequest indexRequest = new IndexRequest(dataStreamName).source("{}", XContentType.JSON)
|
||||||
.opType(DocWriteRequest.OpType.CREATE);
|
.opType(DocWriteRequest.OpType.CREATE);
|
||||||
IndexResponse indexResponse = client().index(indexRequest).actionGet();
|
IndexResponse indexResponse = client().index(indexRequest).actionGet();
|
||||||
assertThat(indexResponse.getIndex(), equalTo(DataStream.getBackingIndexName(dataStreamName, 1)));
|
assertThat(indexResponse.getIndex(), equalTo(DataStream.getDefaultBackingIndexName(dataStreamName, 1)));
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
BulkRequest bulkRequest = new BulkRequest()
|
BulkRequest bulkRequest = new BulkRequest()
|
||||||
.add(new IndexRequest(dataStreamName).source("{}", XContentType.JSON)
|
.add(new IndexRequest(dataStreamName).source("{}", XContentType.JSON)
|
||||||
.opType(DocWriteRequest.OpType.CREATE));
|
.opType(DocWriteRequest.OpType.CREATE));
|
||||||
BulkResponse bulkItemResponses = client().bulk(bulkRequest).actionGet();
|
BulkResponse bulkItemResponses = client().bulk(bulkRequest).actionGet();
|
||||||
assertThat(bulkItemResponses.getItems()[0].getIndex(), equalTo(DataStream.getBackingIndexName(dataStreamName, 1)));
|
assertThat(bulkItemResponses.getItems()[0].getIndex(), equalTo(DataStream.getDefaultBackingIndexName(dataStreamName, 1)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -248,30 +258,32 @@ public class DataStreamIT extends ESIntegTestCase {
|
|||||||
indexDocs(dataStreamName, numDocs);
|
indexDocs(dataStreamName, numDocs);
|
||||||
verifyDocs(dataStreamName, numDocs, 1, 1);
|
verifyDocs(dataStreamName, numDocs, 1, 1);
|
||||||
|
|
||||||
|
String backingIndex = DataStream.getDefaultBackingIndexName(dataStreamName, 1);
|
||||||
GetDataStreamAction.Request getDataStreamRequest = new GetDataStreamAction.Request("*");
|
GetDataStreamAction.Request getDataStreamRequest = new GetDataStreamAction.Request("*");
|
||||||
GetDataStreamAction.Response getDataStreamResponse = client().admin().indices().getDataStreams(getDataStreamRequest).actionGet();
|
GetDataStreamAction.Response getDataStreamResponse = client().admin().indices().getDataStreams(getDataStreamRequest).actionGet();
|
||||||
assertThat(getDataStreamResponse.getDataStreams().size(), equalTo(1));
|
assertThat(getDataStreamResponse.getDataStreams().size(), equalTo(1));
|
||||||
assertThat(getDataStreamResponse.getDataStreams().get(0).getName(), equalTo(dataStreamName));
|
assertThat(getDataStreamResponse.getDataStreams().get(0).getName(), equalTo(dataStreamName));
|
||||||
assertThat(getDataStreamResponse.getDataStreams().get(0).getTimeStampField(), equalTo("@timestamp"));
|
assertThat(getDataStreamResponse.getDataStreams().get(0).getTimeStampField(), equalTo("@timestamp"));
|
||||||
assertThat(getDataStreamResponse.getDataStreams().get(0).getIndices().size(), equalTo(1));
|
assertThat(getDataStreamResponse.getDataStreams().get(0).getIndices().size(), equalTo(1));
|
||||||
assertThat(getDataStreamResponse.getDataStreams().get(0).getIndices().get(0).getName(), equalTo(dataStreamName + "-000001"));
|
assertThat(getDataStreamResponse.getDataStreams().get(0).getIndices().get(0).getName(), equalTo(backingIndex));
|
||||||
|
|
||||||
GetIndexResponse getIndexResponse =
|
GetIndexResponse getIndexResponse =
|
||||||
client().admin().indices().getIndex(new GetIndexRequest().indices(dataStreamName)).actionGet();
|
client().admin().indices().getIndex(new GetIndexRequest().indices(dataStreamName)).actionGet();
|
||||||
assertThat(getIndexResponse.getSettings().get(dataStreamName + "-000001"), notNullValue());
|
assertThat(getIndexResponse.getSettings().get(backingIndex), notNullValue());
|
||||||
assertThat(getIndexResponse.getSettings().get(dataStreamName + "-000001").getAsBoolean("index.hidden", null), is(true));
|
assertThat(getIndexResponse.getSettings().get(backingIndex).getAsBoolean("index.hidden", null), is(true));
|
||||||
assertThat(ObjectPath.eval("properties.baz_field.type",
|
assertThat(ObjectPath.eval("properties.baz_field.type",
|
||||||
getIndexResponse.mappings().get(dataStreamName + "-000001").get("_doc").getSourceAsMap()), equalTo("keyword"));
|
getIndexResponse.mappings().get(backingIndex).get("_doc").getSourceAsMap()), equalTo("keyword"));
|
||||||
|
|
||||||
|
backingIndex = DataStream.getDefaultBackingIndexName(dataStreamName, 2);
|
||||||
RolloverResponse rolloverResponse = client().admin().indices().rolloverIndex(new RolloverRequest(dataStreamName, null)).get();
|
RolloverResponse rolloverResponse = client().admin().indices().rolloverIndex(new RolloverRequest(dataStreamName, null)).get();
|
||||||
assertThat(rolloverResponse.getNewIndex(), equalTo(dataStreamName + "-000002"));
|
assertThat(rolloverResponse.getNewIndex(), equalTo(backingIndex));
|
||||||
assertTrue(rolloverResponse.isRolledOver());
|
assertTrue(rolloverResponse.isRolledOver());
|
||||||
|
|
||||||
getIndexResponse = client().admin().indices().getIndex(new GetIndexRequest().indices(dataStreamName + "-000002")).actionGet();
|
getIndexResponse = client().admin().indices().getIndex(new GetIndexRequest().indices(backingIndex)).actionGet();
|
||||||
assertThat(getIndexResponse.getSettings().get(dataStreamName + "-000002"), notNullValue());
|
assertThat(getIndexResponse.getSettings().get(backingIndex), notNullValue());
|
||||||
assertThat(getIndexResponse.getSettings().get(dataStreamName + "-000002").getAsBoolean("index.hidden", null), is(true));
|
assertThat(getIndexResponse.getSettings().get(backingIndex).getAsBoolean("index.hidden", null), is(true));
|
||||||
assertThat(ObjectPath.eval("properties.baz_field.type",
|
assertThat(ObjectPath.eval("properties.baz_field.type",
|
||||||
getIndexResponse.mappings().get(dataStreamName + "-000002").get("_doc").getSourceAsMap()), equalTo("keyword"));
|
getIndexResponse.mappings().get(backingIndex).get("_doc").getSourceAsMap()), equalTo("keyword"));
|
||||||
|
|
||||||
int numDocs2 = randomIntBetween(2, 16);
|
int numDocs2 = randomIntBetween(2, 16);
|
||||||
indexDocs(dataStreamName, numDocs2);
|
indexDocs(dataStreamName, numDocs2);
|
||||||
@ -283,9 +295,11 @@ public class DataStreamIT extends ESIntegTestCase {
|
|||||||
assertThat(getDataStreamResponse.getDataStreams().size(), equalTo(0));
|
assertThat(getDataStreamResponse.getDataStreams().size(), equalTo(0));
|
||||||
|
|
||||||
expectThrows(IndexNotFoundException.class,
|
expectThrows(IndexNotFoundException.class,
|
||||||
() -> client().admin().indices().getIndex(new GetIndexRequest().indices(dataStreamName + "-000001")).actionGet());
|
() -> client().admin().indices().getIndex(new GetIndexRequest().indices(
|
||||||
|
DataStream.getDefaultBackingIndexName(dataStreamName, 1))).actionGet());
|
||||||
expectThrows(IndexNotFoundException.class,
|
expectThrows(IndexNotFoundException.class,
|
||||||
() -> client().admin().indices().getIndex(new GetIndexRequest().indices(dataStreamName + "-000002")).actionGet());
|
() -> client().admin().indices().getIndex(new GetIndexRequest().indices(
|
||||||
|
DataStream.getDefaultBackingIndexName(dataStreamName, 2))).actionGet());
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testDataStreamsResolvability() throws Exception {
|
public void testDataStreamsResolvability() throws Exception {
|
||||||
@ -392,10 +406,12 @@ public class DataStreamIT extends ESIntegTestCase {
|
|||||||
}
|
}
|
||||||
BulkResponse bulkResponse = client().bulk(bulkRequest).actionGet();
|
BulkResponse bulkResponse = client().bulk(bulkRequest).actionGet();
|
||||||
assertThat(bulkResponse.getItems().length, equalTo(numDocs));
|
assertThat(bulkResponse.getItems().length, equalTo(numDocs));
|
||||||
|
String backingIndex = DataStream.getDefaultBackingIndexName(dataStream, 1);
|
||||||
|
String backingIndexPrefix = backingIndex.substring(0, backingIndex.length() - 3);
|
||||||
for (BulkItemResponse itemResponse : bulkResponse) {
|
for (BulkItemResponse itemResponse : bulkResponse) {
|
||||||
assertThat(itemResponse.getFailureMessage(), nullValue());
|
assertThat(itemResponse.getFailureMessage(), nullValue());
|
||||||
assertThat(itemResponse.status(), equalTo(RestStatus.CREATED));
|
assertThat(itemResponse.status(), equalTo(RestStatus.CREATED));
|
||||||
assertThat(itemResponse.getIndex(), startsWith(dataStream + "-00000"));
|
assertThat(itemResponse.getIndex(), startsWith(backingIndexPrefix));
|
||||||
}
|
}
|
||||||
client().admin().indices().refresh(new RefreshRequest(dataStream)).actionGet();
|
client().admin().indices().refresh(new RefreshRequest(dataStream)).actionGet();
|
||||||
}
|
}
|
||||||
@ -408,7 +424,7 @@ public class DataStreamIT extends ESIntegTestCase {
|
|||||||
|
|
||||||
List<String> expectedIndices = new ArrayList<>();
|
List<String> expectedIndices = new ArrayList<>();
|
||||||
for (long k = minGeneration; k <= maxGeneration; k++) {
|
for (long k = minGeneration; k <= maxGeneration; k++) {
|
||||||
expectedIndices.add(DataStream.getBackingIndexName(dataStream, k));
|
expectedIndices.add(DataStream.getDefaultBackingIndexName(dataStream, k));
|
||||||
}
|
}
|
||||||
Arrays.stream(searchResponse.getHits().getHits()).forEach(hit -> {
|
Arrays.stream(searchResponse.getHits().getHits()).forEach(hit -> {
|
||||||
assertTrue(expectedIndices.contains(hit.getIndex()));
|
assertTrue(expectedIndices.contains(hit.getIndex()));
|
||||||
|
@ -147,7 +147,7 @@ public class MetadataRolloverService {
|
|||||||
|
|
||||||
final DataStream ds = dataStream.getDataStream();
|
final DataStream ds = dataStream.getDataStream();
|
||||||
final IndexMetadata originalWriteIndex = dataStream.getWriteIndex();
|
final IndexMetadata originalWriteIndex = dataStream.getWriteIndex();
|
||||||
final String newWriteIndexName = DataStream.getBackingIndexName(ds.getName(), ds.getGeneration() + 1);
|
final String newWriteIndexName = DataStream.getDefaultBackingIndexName(ds.getName(), ds.getGeneration() + 1);
|
||||||
|
|
||||||
CreateIndexClusterStateUpdateRequest createIndexClusterStateRequest =
|
CreateIndexClusterStateUpdateRequest createIndexClusterStateRequest =
|
||||||
prepareDataStreamCreateIndexRequest(dataStreamName, newWriteIndexName, createIndexRequest);
|
prepareDataStreamCreateIndexRequest(dataStreamName, newWriteIndexName, createIndexRequest);
|
||||||
|
@ -37,6 +37,8 @@ import java.util.Objects;
|
|||||||
|
|
||||||
public final class DataStream extends AbstractDiffable<DataStream> implements ToXContentObject {
|
public final class DataStream extends AbstractDiffable<DataStream> implements ToXContentObject {
|
||||||
|
|
||||||
|
public static final String BACKING_INDEX_PREFIX = ".ds-";
|
||||||
|
|
||||||
private final String name;
|
private final String name;
|
||||||
private final String timeStampField;
|
private final String timeStampField;
|
||||||
private final List<Index> indices;
|
private final List<Index> indices;
|
||||||
@ -48,7 +50,7 @@ public final class DataStream extends AbstractDiffable<DataStream> implements To
|
|||||||
this.indices = indices;
|
this.indices = indices;
|
||||||
this.generation = generation;
|
this.generation = generation;
|
||||||
assert indices.size() > 0;
|
assert indices.size() > 0;
|
||||||
assert indices.get(indices.size() - 1).getName().equals(getBackingIndexName(name, generation));
|
assert indices.get(indices.size() - 1).getName().equals(getDefaultBackingIndexName(name, generation));
|
||||||
}
|
}
|
||||||
|
|
||||||
public DataStream(String name, String timeStampField, List<Index> indices) {
|
public DataStream(String name, String timeStampField, List<Index> indices) {
|
||||||
@ -76,11 +78,11 @@ public final class DataStream extends AbstractDiffable<DataStream> implements To
|
|||||||
* the updated list of backing indices and incremented generation.
|
* the updated list of backing indices and incremented generation.
|
||||||
*
|
*
|
||||||
* @param newWriteIndex the new write backing index. Must conform to the naming convention for
|
* @param newWriteIndex the new write backing index. Must conform to the naming convention for
|
||||||
* backing indices on data streams. See {@link #getBackingIndexName}.
|
* backing indices on data streams. See {@link #getDefaultBackingIndexName}.
|
||||||
* @return new {@code DataStream} instance with the rollover operation applied
|
* @return new {@code DataStream} instance with the rollover operation applied
|
||||||
*/
|
*/
|
||||||
public DataStream rollover(Index newWriteIndex) {
|
public DataStream rollover(Index newWriteIndex) {
|
||||||
assert newWriteIndex.getName().equals(getBackingIndexName(name, generation + 1));
|
assert newWriteIndex.getName().equals(getDefaultBackingIndexName(name, generation + 1));
|
||||||
List<Index> backingIndices = new ArrayList<>(indices);
|
List<Index> backingIndices = new ArrayList<>(indices);
|
||||||
backingIndices.add(newWriteIndex);
|
backingIndices.add(newWriteIndex);
|
||||||
return new DataStream(name, timeStampField, backingIndices, generation + 1);
|
return new DataStream(name, timeStampField, backingIndices, generation + 1);
|
||||||
@ -101,15 +103,15 @@ public final class DataStream extends AbstractDiffable<DataStream> implements To
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Generates the name of the index that conforms to the naming convention for backing indices
|
* Generates the name of the index that conforms to the default naming convention for backing indices
|
||||||
* on data streams given the specified data stream name and generation.
|
* on data streams given the specified data stream name and generation.
|
||||||
*
|
*
|
||||||
* @param dataStreamName name of the data stream
|
* @param dataStreamName name of the data stream
|
||||||
* @param generation generation of the data stream
|
* @param generation generation of the data stream
|
||||||
* @return backing index name
|
* @return backing index name
|
||||||
*/
|
*/
|
||||||
public static String getBackingIndexName(String dataStreamName, long generation) {
|
public static String getDefaultBackingIndexName(String dataStreamName, long generation) {
|
||||||
return String.format(Locale.ROOT, "%s-%06d", dataStreamName, generation);
|
return String.format(Locale.ROOT, BACKING_INDEX_PREFIX + "%s-%06d", dataStreamName, generation);
|
||||||
}
|
}
|
||||||
|
|
||||||
public DataStream(StreamInput in) throws IOException {
|
public DataStream(StreamInput in) throws IOException {
|
||||||
|
@ -31,7 +31,7 @@ import java.util.Map;
|
|||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import static org.elasticsearch.cluster.metadata.DataStream.getBackingIndexName;
|
import static org.elasticsearch.cluster.metadata.DataStream.getDefaultBackingIndexName;
|
||||||
import static org.elasticsearch.cluster.metadata.IndexMetadata.INDEX_HIDDEN_SETTING;
|
import static org.elasticsearch.cluster.metadata.IndexMetadata.INDEX_HIDDEN_SETTING;
|
||||||
import static org.elasticsearch.common.collect.List.copyOf;
|
import static org.elasticsearch.common.collect.List.copyOf;
|
||||||
|
|
||||||
@ -294,7 +294,7 @@ public interface IndexAbstraction {
|
|||||||
this.dataStream = dataStream;
|
this.dataStream = dataStream;
|
||||||
this.dataStreamIndices = copyOf(dataStreamIndices);
|
this.dataStreamIndices = copyOf(dataStreamIndices);
|
||||||
this.writeIndex = dataStreamIndices.get(dataStreamIndices.size() - 1);
|
this.writeIndex = dataStreamIndices.get(dataStreamIndices.size() - 1);
|
||||||
assert writeIndex.getIndex().getName().equals(getBackingIndexName(dataStream.getName(), dataStream.getGeneration()));
|
assert writeIndex.getIndex().getName().equals(getDefaultBackingIndexName(dataStream.getName(), dataStream.getGeneration()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -1714,8 +1714,8 @@ public class IndexMetadata implements Diffable<IndexMetadata>, ToXContentFragmen
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Parses the number from the rolled over index name. It also supports the date-math format (ie. index name is wrapped in < and >)
|
* Parses the number from the rolled over index name. It also supports the date-math format (ie. index name is wrapped in < and >)
|
||||||
* Eg.
|
* E.g.
|
||||||
* - For "logs-000002" it'll return 2
|
* - For ".ds-logs-000002" it will return 2
|
||||||
* - For "<logs-{now/d}-3>" it'll return 3
|
* - For "<logs-{now/d}-3>" it'll return 3
|
||||||
* @throws IllegalArgumentException if the index doesn't contain a "-" separator or if the last token after the separator is not a
|
* @throws IllegalArgumentException if the index doesn't contain a "-" separator or if the last token after the separator is not a
|
||||||
* number
|
* number
|
||||||
|
@ -1531,18 +1531,19 @@ public class Metadata implements Iterable<IndexMetadata>, Diffable<Metadata>, To
|
|||||||
/**
|
/**
|
||||||
* Validates there isn't any index with a name that would clash with the future backing indices of the existing data streams.
|
* Validates there isn't any index with a name that would clash with the future backing indices of the existing data streams.
|
||||||
*
|
*
|
||||||
* For eg. if data stream `foo` has backing indices [`foo-000001`, `foo-000002`] and the indices lookup contains indices
|
* E.g., if data stream `foo` has backing indices [`.ds-foo-000001`, `.ds-foo-000002`] and the indices lookup contains indices
|
||||||
* `foo-000001`, `foo-000002` and `foo-000006` this will throw an IllegalStateException (as attempting to rollover the `foo` data
|
* `.ds-foo-000001`, `.ds-foo-000002` and `.ds-foo-000006` this will throw an IllegalStateException (as attempting to rollover the
|
||||||
* stream from generation 5 to 6 will not be possible)
|
* `foo` data stream from generation 5 to 6 will not be possible)
|
||||||
*
|
*
|
||||||
* @param indicesLookup the indices in the system (this includes the data streams backing indices)
|
* @param indicesLookup the indices in the system (this includes the data stream backing indices)
|
||||||
* @param dsMetadata the data streams in the system
|
* @param dsMetadata the data streams in the system
|
||||||
*/
|
*/
|
||||||
static void validateDataStreams(SortedMap<String, IndexAbstraction> indicesLookup, @Nullable DataStreamMetadata dsMetadata) {
|
static void validateDataStreams(SortedMap<String, IndexAbstraction> indicesLookup, @Nullable DataStreamMetadata dsMetadata) {
|
||||||
if (dsMetadata != null) {
|
if (dsMetadata != null) {
|
||||||
for (DataStream ds : dsMetadata.dataStreams().values()) {
|
for (DataStream ds : dsMetadata.dataStreams().values()) {
|
||||||
Map<String, IndexAbstraction> conflicts =
|
Map<String, IndexAbstraction> conflicts =
|
||||||
indicesLookup.subMap(ds.getName() + "-", ds.getName() + ".") // '.' is the char after '-'
|
indicesLookup.subMap(DataStream.BACKING_INDEX_PREFIX + ds.getName() + "-",
|
||||||
|
DataStream.BACKING_INDEX_PREFIX + ds.getName() + ".") // '.' is the char after '-'
|
||||||
.entrySet().stream()
|
.entrySet().stream()
|
||||||
.filter(entry -> {
|
.filter(entry -> {
|
||||||
if (entry.getValue().getType() != IndexAbstraction.Type.CONCRETE_INDEX) {
|
if (entry.getValue().getType() != IndexAbstraction.Type.CONCRETE_INDEX) {
|
||||||
|
@ -130,7 +130,7 @@ public class MetadataCreateDataStreamService {
|
|||||||
|
|
||||||
ComposableIndexTemplate template = lookupTemplateForDataStream(request.name, currentState.metadata());
|
ComposableIndexTemplate template = lookupTemplateForDataStream(request.name, currentState.metadata());
|
||||||
|
|
||||||
String firstBackingIndexName = DataStream.getBackingIndexName(request.name, 1);
|
String firstBackingIndexName = DataStream.getDefaultBackingIndexName(request.name, 1);
|
||||||
CreateIndexClusterStateUpdateRequest createIndexRequest =
|
CreateIndexClusterStateUpdateRequest createIndexRequest =
|
||||||
new CreateIndexClusterStateUpdateRequest("initialize_data_stream", firstBackingIndexName, firstBackingIndexName)
|
new CreateIndexClusterStateUpdateRequest("initialize_data_stream", firstBackingIndexName, firstBackingIndexName)
|
||||||
.dataStreamName(request.name)
|
.dataStreamName(request.name)
|
||||||
|
@ -126,7 +126,7 @@ public class DeleteDataStreamRequestTests extends AbstractWireSerializingTestCas
|
|||||||
for (Tuple<String, Integer> dsTuple : dataStreams) {
|
for (Tuple<String, Integer> dsTuple : dataStreams) {
|
||||||
List<IndexMetadata> backingIndices = new ArrayList<>();
|
List<IndexMetadata> backingIndices = new ArrayList<>();
|
||||||
for (int backingIndexNumber = 1; backingIndexNumber <= dsTuple.v2(); backingIndexNumber++) {
|
for (int backingIndexNumber = 1; backingIndexNumber <= dsTuple.v2(); backingIndexNumber++) {
|
||||||
backingIndices.add(createIndexMetadata(DataStream.getBackingIndexName(dsTuple.v1(), backingIndexNumber), true));
|
backingIndices.add(createIndexMetadata(DataStream.getDefaultBackingIndexName(dsTuple.v1(), backingIndexNumber), true));
|
||||||
}
|
}
|
||||||
allIndices.addAll(backingIndices);
|
allIndices.addAll(backingIndices);
|
||||||
|
|
||||||
|
@ -315,7 +315,7 @@ public class MetadataRolloverServiceTests extends ESTestCase {
|
|||||||
|
|
||||||
public void testCreateIndexRequestForDataStream() {
|
public void testCreateIndexRequestForDataStream() {
|
||||||
DataStream dataStream = DataStreamTests.randomInstance();
|
DataStream dataStream = DataStreamTests.randomInstance();
|
||||||
final String newWriteIndexName = DataStream.getBackingIndexName(dataStream.getName(), dataStream.getGeneration() + 1);
|
final String newWriteIndexName = DataStream.getDefaultBackingIndexName(dataStream.getName(), dataStream.getGeneration() + 1);
|
||||||
final RolloverRequest rolloverRequest = new RolloverRequest(dataStream.getName(), randomAlphaOfLength(10));
|
final RolloverRequest rolloverRequest = new RolloverRequest(dataStream.getName(), randomAlphaOfLength(10));
|
||||||
final ActiveShardCount activeShardCount = randomBoolean() ? ActiveShardCount.ALL : ActiveShardCount.ONE;
|
final ActiveShardCount activeShardCount = randomBoolean() ? ActiveShardCount.ALL : ActiveShardCount.ONE;
|
||||||
rolloverRequest.getCreateIndexRequest().waitForActiveShards(activeShardCount);
|
rolloverRequest.getCreateIndexRequest().waitForActiveShards(activeShardCount);
|
||||||
@ -560,8 +560,8 @@ public class MetadataRolloverServiceTests extends ESTestCase {
|
|||||||
randomBoolean());
|
randomBoolean());
|
||||||
long after = testThreadPool.absoluteTimeInMillis();
|
long after = testThreadPool.absoluteTimeInMillis();
|
||||||
|
|
||||||
String sourceIndexName = DataStream.getBackingIndexName(dataStream.getName(), dataStream.getGeneration());
|
String sourceIndexName = DataStream.getDefaultBackingIndexName(dataStream.getName(), dataStream.getGeneration());
|
||||||
String newIndexName = DataStream.getBackingIndexName(dataStream.getName(), dataStream.getGeneration() + 1);
|
String newIndexName = DataStream.getDefaultBackingIndexName(dataStream.getName(), dataStream.getGeneration() + 1);
|
||||||
assertEquals(sourceIndexName, rolloverResult.sourceIndexName);
|
assertEquals(sourceIndexName, rolloverResult.sourceIndexName);
|
||||||
assertEquals(newIndexName, rolloverResult.rolloverIndexName);
|
assertEquals(newIndexName, rolloverResult.rolloverIndexName);
|
||||||
Metadata rolloverMetadata = rolloverResult.clusterState.metadata();
|
Metadata rolloverMetadata = rolloverResult.clusterState.metadata();
|
||||||
|
@ -29,7 +29,7 @@ import java.util.ArrayList;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
|
|
||||||
import static org.elasticsearch.cluster.metadata.DataStream.getBackingIndexName;
|
import static org.elasticsearch.cluster.metadata.DataStream.getDefaultBackingIndexName;
|
||||||
import static org.hamcrest.Matchers.equalTo;
|
import static org.hamcrest.Matchers.equalTo;
|
||||||
|
|
||||||
public class DataStreamTests extends AbstractSerializingTestCase<DataStream> {
|
public class DataStreamTests extends AbstractSerializingTestCase<DataStream> {
|
||||||
@ -47,7 +47,7 @@ public class DataStreamTests extends AbstractSerializingTestCase<DataStream> {
|
|||||||
List<Index> indices = randomIndexInstances();
|
List<Index> indices = randomIndexInstances();
|
||||||
long generation = indices.size() + randomLongBetween(1, 128);
|
long generation = indices.size() + randomLongBetween(1, 128);
|
||||||
String dataStreamName = randomAlphaOfLength(10).toLowerCase(Locale.ROOT);
|
String dataStreamName = randomAlphaOfLength(10).toLowerCase(Locale.ROOT);
|
||||||
indices.add(new Index(getBackingIndexName(dataStreamName, generation), UUIDs.randomBase64UUID(random())));
|
indices.add(new Index(getDefaultBackingIndexName(dataStreamName, generation), UUIDs.randomBase64UUID(random())));
|
||||||
return new DataStream(dataStreamName, randomAlphaOfLength(10), indices, generation);
|
return new DataStream(dataStreamName, randomAlphaOfLength(10), indices, generation);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -68,7 +68,7 @@ public class DataStreamTests extends AbstractSerializingTestCase<DataStream> {
|
|||||||
|
|
||||||
public void testRollover() {
|
public void testRollover() {
|
||||||
DataStream ds = randomInstance();
|
DataStream ds = randomInstance();
|
||||||
Index newWriteIndex = new Index(getBackingIndexName(ds.getName(), ds.getGeneration() + 1), UUIDs.randomBase64UUID(random()));
|
Index newWriteIndex = new Index(getDefaultBackingIndexName(ds.getName(), ds.getGeneration() + 1), UUIDs.randomBase64UUID(random()));
|
||||||
DataStream rolledDs = ds.rollover(newWriteIndex);
|
DataStream rolledDs = ds.rollover(newWriteIndex);
|
||||||
|
|
||||||
assertThat(rolledDs.getName(), equalTo(ds.getName()));
|
assertThat(rolledDs.getName(), equalTo(ds.getName()));
|
||||||
@ -86,7 +86,7 @@ public class DataStreamTests extends AbstractSerializingTestCase<DataStream> {
|
|||||||
|
|
||||||
List<Index> indices = new ArrayList<>(numBackingIndices);
|
List<Index> indices = new ArrayList<>(numBackingIndices);
|
||||||
for (int k = 1; k <= numBackingIndices; k++) {
|
for (int k = 1; k <= numBackingIndices; k++) {
|
||||||
indices.add(new Index(DataStream.getBackingIndexName(dataStreamName, k), UUIDs.randomBase64UUID(random())));
|
indices.add(new Index(DataStream.getDefaultBackingIndexName(dataStreamName, k), UUIDs.randomBase64UUID(random())));
|
||||||
}
|
}
|
||||||
DataStream original = new DataStream(dataStreamName, "@timestamp", indices);
|
DataStream original = new DataStream(dataStreamName, "@timestamp", indices);
|
||||||
DataStream updated = original.removeBackingIndex(indices.get(indexToRemove - 1));
|
DataStream updated = original.removeBackingIndex(indices.get(indexToRemove - 1));
|
||||||
@ -98,4 +98,14 @@ public class DataStreamTests extends AbstractSerializingTestCase<DataStream> {
|
|||||||
assertThat(updated.getIndices().get(k), equalTo(original.getIndices().get(k < (indexToRemove - 1) ? k : k + 1)));
|
assertThat(updated.getIndices().get(k), equalTo(original.getIndices().get(k < (indexToRemove - 1) ? k : k + 1)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void testDefaultBackingIndexName() {
|
||||||
|
// this test does little more than flag that changing the default naming convention for backing indices
|
||||||
|
// will also require changing a lot of hard-coded values in REST tests and docs
|
||||||
|
long backingIndexNum = randomLongBetween(1, 1000001);
|
||||||
|
String dataStreamName = randomAlphaOfLength(6);
|
||||||
|
String defaultBackingIndexName = DataStream.getDefaultBackingIndexName(dataStreamName, backingIndexNum);
|
||||||
|
String expectedBackingIndexName = String.format(Locale.ROOT, ".ds-%s-%06d", dataStreamName, backingIndexNum);
|
||||||
|
assertThat(defaultBackingIndexName, equalTo(expectedBackingIndexName));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -371,7 +371,7 @@ public class IndexMetadataTests extends ESTestCase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void testParseIndexNameReturnsCounter() {
|
public void testParseIndexNameReturnsCounter() {
|
||||||
assertThat(parseIndexNameCounter("logs-000003"), is(3));
|
assertThat(parseIndexNameCounter(".ds-logs-000003"), is(3));
|
||||||
assertThat(parseIndexNameCounter("shrink-logs-000003"), is(3));
|
assertThat(parseIndexNameCounter("shrink-logs-000003"), is(3));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1777,8 +1777,8 @@ public class IndexNameExpressionResolverTests extends ESTestCase {
|
|||||||
IndicesOptions indicesOptions = IndicesOptions.STRICT_EXPAND_OPEN;
|
IndicesOptions indicesOptions = IndicesOptions.STRICT_EXPAND_OPEN;
|
||||||
Index[] result = indexNameExpressionResolver.concreteIndices(state, indicesOptions, true, "my-data-stream");
|
Index[] result = indexNameExpressionResolver.concreteIndices(state, indicesOptions, true, "my-data-stream");
|
||||||
assertThat(result.length, equalTo(2));
|
assertThat(result.length, equalTo(2));
|
||||||
assertThat(result[0].getName(), equalTo(dataStreamName + "-000001"));
|
assertThat(result[0].getName(), equalTo(DataStream.getDefaultBackingIndexName(dataStreamName, 1)));
|
||||||
assertThat(result[1].getName(), equalTo(dataStreamName + "-000002"));
|
assertThat(result[1].getName(), equalTo(DataStream.getDefaultBackingIndexName(dataStreamName, 2)));
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
// Ignore data streams
|
// Ignore data streams
|
||||||
@ -1809,7 +1809,7 @@ public class IndexNameExpressionResolverTests extends ESTestCase {
|
|||||||
{
|
{
|
||||||
IndicesOptions indicesOptions = IndicesOptions.STRICT_EXPAND_OPEN;
|
IndicesOptions indicesOptions = IndicesOptions.STRICT_EXPAND_OPEN;
|
||||||
Index result = indexNameExpressionResolver.concreteWriteIndex(state, indicesOptions, "my-data-stream", false, true);
|
Index result = indexNameExpressionResolver.concreteWriteIndex(state, indicesOptions, "my-data-stream", false, true);
|
||||||
assertThat(result.getName(), equalTo(dataStreamName + "-000002"));
|
assertThat(result.getName(), equalTo(DataStream.getDefaultBackingIndexName(dataStreamName, 2)));
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
// Ignore data streams
|
// Ignore data streams
|
||||||
@ -1861,18 +1861,18 @@ public class IndexNameExpressionResolverTests extends ESTestCase {
|
|||||||
Index[] result = indexNameExpressionResolver.concreteIndices(state, indicesOptions, true, "logs-*");
|
Index[] result = indexNameExpressionResolver.concreteIndices(state, indicesOptions, true, "logs-*");
|
||||||
Arrays.sort(result, Comparator.comparing(Index::getName));
|
Arrays.sort(result, Comparator.comparing(Index::getName));
|
||||||
assertThat(result.length, equalTo(4));
|
assertThat(result.length, equalTo(4));
|
||||||
assertThat(result[0].getName(), equalTo(dataStream1 + "-000001"));
|
assertThat(result[0].getName(), equalTo(DataStream.getDefaultBackingIndexName(dataStream1, 1)));
|
||||||
assertThat(result[1].getName(), equalTo(dataStream1 + "-000002"));
|
assertThat(result[1].getName(), equalTo(DataStream.getDefaultBackingIndexName(dataStream1, 2)));
|
||||||
assertThat(result[2].getName(), equalTo(dataStream2 + "-000001"));
|
assertThat(result[2].getName(), equalTo(DataStream.getDefaultBackingIndexName(dataStream2, 1)));
|
||||||
assertThat(result[3].getName(), equalTo(dataStream2 + "-000002"));
|
assertThat(result[3].getName(), equalTo(DataStream.getDefaultBackingIndexName(dataStream2, 2)));;
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
IndicesOptions indicesOptions = IndicesOptions.STRICT_EXPAND_OPEN;
|
IndicesOptions indicesOptions = IndicesOptions.STRICT_EXPAND_OPEN;
|
||||||
Index[] result = indexNameExpressionResolver.concreteIndices(state, indicesOptions, true, "logs-m*");
|
Index[] result = indexNameExpressionResolver.concreteIndices(state, indicesOptions, true, "logs-m*");
|
||||||
Arrays.sort(result, Comparator.comparing(Index::getName));
|
Arrays.sort(result, Comparator.comparing(Index::getName));
|
||||||
assertThat(result.length, equalTo(2));
|
assertThat(result.length, equalTo(2));
|
||||||
assertThat(result[0].getName(), equalTo(dataStream1 + "-000001"));
|
assertThat(result[0].getName(), equalTo(DataStream.getDefaultBackingIndexName(dataStream1, 1)));
|
||||||
assertThat(result[1].getName(), equalTo(dataStream1 + "-000002"));
|
assertThat(result[1].getName(), equalTo(DataStream.getDefaultBackingIndexName(dataStream1, 2)));
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
IndicesOptions indicesOptions = IndicesOptions.STRICT_EXPAND_OPEN; // without include data streams
|
IndicesOptions indicesOptions = IndicesOptions.STRICT_EXPAND_OPEN; // without include data streams
|
||||||
@ -1906,8 +1906,8 @@ public class IndexNameExpressionResolverTests extends ESTestCase {
|
|||||||
Index[] result = indexNameExpressionResolver.concreteIndices(state, indicesOptions, true, "logs-*");
|
Index[] result = indexNameExpressionResolver.concreteIndices(state, indicesOptions, true, "logs-*");
|
||||||
Arrays.sort(result, Comparator.comparing(Index::getName));
|
Arrays.sort(result, Comparator.comparing(Index::getName));
|
||||||
assertThat(result.length, equalTo(3));
|
assertThat(result.length, equalTo(3));
|
||||||
assertThat(result[0].getName(), equalTo("logs-foobar-000001"));
|
assertThat(result[0].getName(), equalTo(DataStream.getDefaultBackingIndexName(dataStream1, 1)));
|
||||||
assertThat(result[1].getName(), equalTo("logs-foobar-000002"));
|
assertThat(result[1].getName(), equalTo(DataStream.getDefaultBackingIndexName(dataStream1, 2)));
|
||||||
assertThat(result[2].getName(), equalTo("logs-foobarbaz-0"));
|
assertThat(result[2].getName(), equalTo("logs-foobarbaz-0"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -53,8 +53,8 @@ public class MetadataCreateDataStreamServiceTests extends ESTestCase {
|
|||||||
ClusterState newState = MetadataCreateDataStreamService.createDataStream(metadataCreateIndexService, cs, req);
|
ClusterState newState = MetadataCreateDataStreamService.createDataStream(metadataCreateIndexService, cs, req);
|
||||||
assertThat(newState.metadata().dataStreams().size(), equalTo(1));
|
assertThat(newState.metadata().dataStreams().size(), equalTo(1));
|
||||||
assertThat(newState.metadata().dataStreams().get(dataStreamName).getName(), equalTo(dataStreamName));
|
assertThat(newState.metadata().dataStreams().get(dataStreamName).getName(), equalTo(dataStreamName));
|
||||||
assertThat(newState.metadata().index(DataStream.getBackingIndexName(dataStreamName, 1)), notNullValue());
|
assertThat(newState.metadata().index(DataStream.getDefaultBackingIndexName(dataStreamName, 1)), notNullValue());
|
||||||
assertThat(newState.metadata().index(DataStream.getBackingIndexName(dataStreamName, 1)).getSettings().get("index.hidden"),
|
assertThat(newState.metadata().index(DataStream.getDefaultBackingIndexName(dataStreamName, 1)).getSettings().get("index.hidden"),
|
||||||
equalTo("true"));
|
equalTo("true"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -120,12 +120,13 @@ public class MetadataDeleteIndexServiceTests extends ESTestCase {
|
|||||||
|
|
||||||
int numIndexToDelete = randomIntBetween(1, numBackingIndices - 1);
|
int numIndexToDelete = randomIntBetween(1, numBackingIndices - 1);
|
||||||
|
|
||||||
Index indexToDelete = before.metadata().index(DataStream.getBackingIndexName(dataStreamName, numIndexToDelete)).getIndex();
|
Index indexToDelete = before.metadata().index(DataStream.getDefaultBackingIndexName(dataStreamName, numIndexToDelete)).getIndex();
|
||||||
ClusterState after = service.deleteIndices(before, Set.of(indexToDelete));
|
ClusterState after = service.deleteIndices(before, Set.of(indexToDelete));
|
||||||
|
|
||||||
assertThat(after.metadata().getIndices().get(indexToDelete.getName()), IsNull.nullValue());
|
assertThat(after.metadata().getIndices().get(indexToDelete.getName()), IsNull.nullValue());
|
||||||
assertThat(after.metadata().getIndices().size(), equalTo(numBackingIndices - 1));
|
assertThat(after.metadata().getIndices().size(), equalTo(numBackingIndices - 1));
|
||||||
assertThat(after.metadata().getIndices().get(DataStream.getBackingIndexName(dataStreamName, numIndexToDelete)), IsNull.nullValue());
|
assertThat(after.metadata().getIndices().get(
|
||||||
|
DataStream.getDefaultBackingIndexName(dataStreamName, numIndexToDelete)), IsNull.nullValue());
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testDeleteCurrentWriteIndexForDataStream() {
|
public void testDeleteCurrentWriteIndexForDataStream() {
|
||||||
@ -134,7 +135,7 @@ public class MetadataDeleteIndexServiceTests extends ESTestCase {
|
|||||||
ClusterState before = DeleteDataStreamRequestTests.getClusterStateWithDataStreams(
|
ClusterState before = DeleteDataStreamRequestTests.getClusterStateWithDataStreams(
|
||||||
List.of(new Tuple<>(dataStreamName, numBackingIndices)), List.of());
|
List.of(new Tuple<>(dataStreamName, numBackingIndices)), List.of());
|
||||||
|
|
||||||
Index indexToDelete = before.metadata().index(DataStream.getBackingIndexName(dataStreamName, numBackingIndices)).getIndex();
|
Index indexToDelete = before.metadata().index(DataStream.getDefaultBackingIndexName(dataStreamName, numBackingIndices)).getIndex();
|
||||||
Exception e = expectThrows(IllegalArgumentException.class, () -> service.deleteIndices(before, Set.of(indexToDelete)));
|
Exception e = expectThrows(IllegalArgumentException.class, () -> service.deleteIndices(before, Set.of(indexToDelete)));
|
||||||
|
|
||||||
assertThat(e.getMessage(), containsString("index [" + indexToDelete.getName() + "] is the write index for data stream [" +
|
assertThat(e.getMessage(), containsString("index [" + indexToDelete.getName() + "] is the write index for data stream [" +
|
||||||
|
@ -399,7 +399,7 @@ public class MetadataIndexStateServiceTests extends ESTestCase {
|
|||||||
String dataStreamName = randomAlphaOfLength(6).toLowerCase(Locale.ROOT);
|
String dataStreamName = randomAlphaOfLength(6).toLowerCase(Locale.ROOT);
|
||||||
int numBackingIndices = randomIntBetween(1, 5);
|
int numBackingIndices = randomIntBetween(1, 5);
|
||||||
dataStreamsToCreate.add(new Tuple<>(dataStreamName, numBackingIndices));
|
dataStreamsToCreate.add(new Tuple<>(dataStreamName, numBackingIndices));
|
||||||
writeIndices.add(DataStream.getBackingIndexName(dataStreamName, numBackingIndices));
|
writeIndices.add(DataStream.getDefaultBackingIndexName(dataStreamName, numBackingIndices));
|
||||||
}
|
}
|
||||||
ClusterState cs = DeleteDataStreamRequestTests.getClusterStateWithDataStreams(dataStreamsToCreate,
|
ClusterState cs = DeleteDataStreamRequestTests.getClusterStateWithDataStreams(dataStreamsToCreate,
|
||||||
org.elasticsearch.common.collect.List.of());
|
org.elasticsearch.common.collect.List.of());
|
||||||
|
@ -998,13 +998,14 @@ public class MetadataTests extends ESTestCase {
|
|||||||
IllegalStateException e = expectThrows(IllegalStateException.class, b::build);
|
IllegalStateException e = expectThrows(IllegalStateException.class, b::build);
|
||||||
assertThat(e.getMessage(),
|
assertThat(e.getMessage(),
|
||||||
containsString("index, alias, and data stream names need to be unique, but the following duplicates were found [" +
|
containsString("index, alias, and data stream names need to be unique, but the following duplicates were found [" +
|
||||||
dataStreamName + " (alias of [" + DataStream.getBackingIndexName(dataStreamName, 1) + "]) conflicts with data stream]"));
|
dataStreamName + " (alias of [" + DataStream.getDefaultBackingIndexName(dataStreamName, 1) +
|
||||||
|
"]) conflicts with data stream]"));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testBuilderRejectsDataStreamWithConflictingBackingIndices() {
|
public void testBuilderRejectsDataStreamWithConflictingBackingIndices() {
|
||||||
final String dataStreamName = "my-data-stream";
|
final String dataStreamName = "my-data-stream";
|
||||||
IndexMetadata validIdx = createFirstBackingIndex(dataStreamName).build();
|
IndexMetadata validIdx = createFirstBackingIndex(dataStreamName).build();
|
||||||
final String conflictingIndex = DataStream.getBackingIndexName(dataStreamName, 2);
|
final String conflictingIndex = DataStream.getDefaultBackingIndexName(dataStreamName, 2);
|
||||||
IndexMetadata invalidIdx = createBackingIndex(dataStreamName, 2).build();
|
IndexMetadata invalidIdx = createBackingIndex(dataStreamName, 2).build();
|
||||||
Metadata.Builder b = Metadata.builder()
|
Metadata.Builder b = Metadata.builder()
|
||||||
.put(validIdx, false)
|
.put(validIdx, false)
|
||||||
@ -1018,7 +1019,7 @@ public class MetadataTests extends ESTestCase {
|
|||||||
|
|
||||||
public void testBuilderRejectsDataStreamWithConflictingBackingAlias() {
|
public void testBuilderRejectsDataStreamWithConflictingBackingAlias() {
|
||||||
final String dataStreamName = "my-data-stream";
|
final String dataStreamName = "my-data-stream";
|
||||||
final String conflictingName = DataStream.getBackingIndexName(dataStreamName, 2);
|
final String conflictingName = DataStream.getDefaultBackingIndexName(dataStreamName, 2);
|
||||||
IndexMetadata idx = createFirstBackingIndex(dataStreamName)
|
IndexMetadata idx = createFirstBackingIndex(dataStreamName)
|
||||||
.putAlias(new AliasMetadata.Builder(conflictingName))
|
.putAlias(new AliasMetadata.Builder(conflictingName))
|
||||||
.build();
|
.build();
|
||||||
@ -1039,7 +1040,7 @@ public class MetadataTests extends ESTestCase {
|
|||||||
Metadata.Builder b = Metadata.builder();
|
Metadata.Builder b = Metadata.builder();
|
||||||
for (int k = 1; k <= numBackingIndices; k++) {
|
for (int k = 1; k <= numBackingIndices; k++) {
|
||||||
lastBackingIndexNum = randomIntBetween(lastBackingIndexNum + 1, lastBackingIndexNum + 50);
|
lastBackingIndexNum = randomIntBetween(lastBackingIndexNum + 1, lastBackingIndexNum + 50);
|
||||||
IndexMetadata im = IndexMetadata.builder(DataStream.getBackingIndexName(dataStreamName, lastBackingIndexNum))
|
IndexMetadata im = IndexMetadata.builder(DataStream.getDefaultBackingIndexName(dataStreamName, lastBackingIndexNum))
|
||||||
.settings(settings(Version.CURRENT))
|
.settings(settings(Version.CURRENT))
|
||||||
.numberOfShards(1)
|
.numberOfShards(1)
|
||||||
.numberOfReplicas(1)
|
.numberOfReplicas(1)
|
||||||
@ -1081,7 +1082,8 @@ public class MetadataTests extends ESTestCase {
|
|||||||
assertThat(value.isHidden(), is(false));
|
assertThat(value.isHidden(), is(false));
|
||||||
assertThat(value.getType(), equalTo(IndexAbstraction.Type.DATA_STREAM));
|
assertThat(value.getType(), equalTo(IndexAbstraction.Type.DATA_STREAM));
|
||||||
assertThat(value.getIndices().size(), equalTo(ds.getIndices().size()));
|
assertThat(value.getIndices().size(), equalTo(ds.getIndices().size()));
|
||||||
assertThat(value.getWriteIndex().getIndex().getName(), equalTo(name + "-00000" + ds.getIndices().size()));
|
assertThat(value.getWriteIndex().getIndex().getName(),
|
||||||
|
equalTo(DataStream.getDefaultBackingIndexName(name, ds.getGeneration())));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1153,7 +1155,7 @@ public class MetadataTests extends ESTestCase {
|
|||||||
expectThrows(IllegalStateException.class, () -> validateDataStreams(indicesLookup, dataStreamMetadata));
|
expectThrows(IllegalStateException.class, () -> validateDataStreams(indicesLookup, dataStreamMetadata));
|
||||||
assertThat(illegalStateException.getMessage(),
|
assertThat(illegalStateException.getMessage(),
|
||||||
is("data stream [foo-datastream] could create backing indices that conflict with 1 existing index(s) or alias(s) " +
|
is("data stream [foo-datastream] could create backing indices that conflict with 1 existing index(s) or alias(s) " +
|
||||||
"including 'foo-datastream-000020'"));
|
"including '" + index.getName() + "'"));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testValidateDataStreamsIgnoresIndicesWithoutCounter() {
|
public void testValidateDataStreamsIgnoresIndicesWithoutCounter() {
|
||||||
@ -1192,7 +1194,7 @@ public class MetadataTests extends ESTestCase {
|
|||||||
for (int i = 1; i <= generations; i++) {
|
for (int i = 1; i <= generations; i++) {
|
||||||
IndexMetadata idx;
|
IndexMetadata idx;
|
||||||
if (i % 2 == 0 && i < generations) {
|
if (i % 2 == 0 && i < generations) {
|
||||||
idx = IndexMetadata.builder("shrink-" + DataStream.getBackingIndexName(dataStreamName, i))
|
idx = IndexMetadata.builder("shrink-" + DataStream.getDefaultBackingIndexName(dataStreamName, i))
|
||||||
.settings(ESTestCase.settings(Version.CURRENT).put("index.hidden", true))
|
.settings(ESTestCase.settings(Version.CURRENT).put("index.hidden", true))
|
||||||
.numberOfShards(1)
|
.numberOfShards(1)
|
||||||
.numberOfReplicas(1)
|
.numberOfReplicas(1)
|
||||||
@ -1283,7 +1285,7 @@ public class MetadataTests extends ESTestCase {
|
|||||||
int lastIndexNum = randomIntBetween(9, 50);
|
int lastIndexNum = randomIntBetween(9, 50);
|
||||||
Metadata.Builder b = Metadata.builder();
|
Metadata.Builder b = Metadata.builder();
|
||||||
for (int k = 1; k <= numIndices; k++) {
|
for (int k = 1; k <= numIndices; k++) {
|
||||||
IndexMetadata im = IndexMetadata.builder(DataStream.getBackingIndexName("index", lastIndexNum))
|
IndexMetadata im = IndexMetadata.builder(DataStream.getDefaultBackingIndexName("index", lastIndexNum))
|
||||||
.settings(settings(Version.CURRENT))
|
.settings(settings(Version.CURRENT))
|
||||||
.numberOfShards(1)
|
.numberOfShards(1)
|
||||||
.numberOfReplicas(1)
|
.numberOfReplicas(1)
|
||||||
@ -1298,7 +1300,7 @@ public class MetadataTests extends ESTestCase {
|
|||||||
int lastBackingIndexNum = 0;
|
int lastBackingIndexNum = 0;
|
||||||
for (int k = 1; k <= numBackingIndices; k++) {
|
for (int k = 1; k <= numBackingIndices; k++) {
|
||||||
lastBackingIndexNum = randomIntBetween(lastBackingIndexNum + 1, lastBackingIndexNum + 50);
|
lastBackingIndexNum = randomIntBetween(lastBackingIndexNum + 1, lastBackingIndexNum + 50);
|
||||||
IndexMetadata im = IndexMetadata.builder(DataStream.getBackingIndexName(dataStreamName, lastBackingIndexNum))
|
IndexMetadata im = IndexMetadata.builder(DataStream.getDefaultBackingIndexName(dataStreamName, lastBackingIndexNum))
|
||||||
.settings(settings(Version.CURRENT))
|
.settings(settings(Version.CURRENT))
|
||||||
.numberOfShards(1)
|
.numberOfShards(1)
|
||||||
.numberOfReplicas(1)
|
.numberOfReplicas(1)
|
||||||
|
@ -39,7 +39,7 @@ public final class DataStreamTestHelper {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static IndexMetadata.Builder createBackingIndex(String dataStreamName, int generation) {
|
public static IndexMetadata.Builder createBackingIndex(String dataStreamName, int generation) {
|
||||||
return IndexMetadata.builder(DataStream.getBackingIndexName(dataStreamName, generation))
|
return IndexMetadata.builder(DataStream.getDefaultBackingIndexName(dataStreamName, generation))
|
||||||
.settings(SETTINGS)
|
.settings(SETTINGS)
|
||||||
.numberOfShards(NUMBER_OF_SHARDS)
|
.numberOfShards(NUMBER_OF_SHARDS)
|
||||||
.numberOfReplicas(NUMBER_OF_REPLICAS);
|
.numberOfReplicas(NUMBER_OF_REPLICAS);
|
||||||
|
@ -121,7 +121,7 @@ public class RolloverStepTests extends AbstractStepMasterTimeoutTestCase<Rollove
|
|||||||
|
|
||||||
public void testPerformActionOnDataStream() {
|
public void testPerformActionOnDataStream() {
|
||||||
String dataStreamName = "test-datastream";
|
String dataStreamName = "test-datastream";
|
||||||
IndexMetadata indexMetadata = IndexMetadata.builder(dataStreamName + "-000001")
|
IndexMetadata indexMetadata = IndexMetadata.builder(DataStream.getDefaultBackingIndexName(dataStreamName, 1))
|
||||||
.settings(settings(Version.CURRENT))
|
.settings(settings(Version.CURRENT))
|
||||||
.numberOfShards(randomIntBetween(1, 5)).numberOfReplicas(randomIntBetween(0, 5)).build();
|
.numberOfShards(randomIntBetween(1, 5)).numberOfReplicas(randomIntBetween(0, 5)).build();
|
||||||
|
|
||||||
|
@ -83,12 +83,12 @@ public class UpdateRolloverLifecycleDateStepTests extends AbstractStepTestCase<U
|
|||||||
long creationDate = randomLongBetween(0, 1000000);
|
long creationDate = randomLongBetween(0, 1000000);
|
||||||
long rolloverTime = randomValueOtherThan(creationDate, () -> randomNonNegativeLong());
|
long rolloverTime = randomValueOtherThan(creationDate, () -> randomNonNegativeLong());
|
||||||
String dataStreamName = "test-datastream";
|
String dataStreamName = "test-datastream";
|
||||||
IndexMetadata originalIndexMeta = IndexMetadata.builder(dataStreamName + "-000001")
|
IndexMetadata originalIndexMeta = IndexMetadata.builder(DataStream.getDefaultBackingIndexName(dataStreamName, 1))
|
||||||
.putRolloverInfo(new RolloverInfo(dataStreamName, Collections.emptyList(), rolloverTime))
|
.putRolloverInfo(new RolloverInfo(dataStreamName, Collections.emptyList(), rolloverTime))
|
||||||
.settings(settings(Version.CURRENT))
|
.settings(settings(Version.CURRENT))
|
||||||
.numberOfShards(randomIntBetween(1, 5)).numberOfReplicas(randomIntBetween(0, 5)).build();
|
.numberOfShards(randomIntBetween(1, 5)).numberOfReplicas(randomIntBetween(0, 5)).build();
|
||||||
|
|
||||||
IndexMetadata rolledIndexMeta= IndexMetadata.builder(dataStreamName + "-000002")
|
IndexMetadata rolledIndexMeta= IndexMetadata.builder(DataStream.getDefaultBackingIndexName(dataStreamName, 2))
|
||||||
.settings(settings(Version.CURRENT))
|
.settings(settings(Version.CURRENT))
|
||||||
.numberOfShards(randomIntBetween(1, 5)).numberOfReplicas(randomIntBetween(0, 5)).build();
|
.numberOfShards(randomIntBetween(1, 5)).numberOfReplicas(randomIntBetween(0, 5)).build();
|
||||||
|
|
||||||
|
@ -149,11 +149,11 @@ public class WaitForActiveShardsTests extends AbstractStepTestCase<WaitForActive
|
|||||||
|
|
||||||
public void testResultEvaluatedOnDataStream() throws IOException {
|
public void testResultEvaluatedOnDataStream() throws IOException {
|
||||||
String dataStreamName = "test-datastream";
|
String dataStreamName = "test-datastream";
|
||||||
IndexMetadata originalIndexMeta = IndexMetadata.builder(dataStreamName + "-000001")
|
IndexMetadata originalIndexMeta = IndexMetadata.builder(DataStream.getDefaultBackingIndexName(dataStreamName, 1))
|
||||||
.settings(settings(Version.CURRENT))
|
.settings(settings(Version.CURRENT))
|
||||||
.numberOfShards(randomIntBetween(1, 5)).numberOfReplicas(randomIntBetween(0, 5)).build();
|
.numberOfShards(randomIntBetween(1, 5)).numberOfReplicas(randomIntBetween(0, 5)).build();
|
||||||
|
|
||||||
IndexMetadata rolledIndexMeta= IndexMetadata.builder(dataStreamName + "-000002")
|
IndexMetadata rolledIndexMeta= IndexMetadata.builder(DataStream.getDefaultBackingIndexName(dataStreamName, 2))
|
||||||
.settings(settings(Version.CURRENT).put("index.write.wait_for_active_shards", "3"))
|
.settings(settings(Version.CURRENT).put("index.write.wait_for_active_shards", "3"))
|
||||||
.numberOfShards(1).numberOfReplicas(3).build();
|
.numberOfShards(1).numberOfReplicas(3).build();
|
||||||
|
|
||||||
|
@ -139,7 +139,7 @@ public class WaitForRolloverReadyStepTests extends AbstractStepTestCase<WaitForR
|
|||||||
|
|
||||||
public void testEvaluateConditionOnDataStreamTarget() {
|
public void testEvaluateConditionOnDataStreamTarget() {
|
||||||
String dataStreamName = "test-datastream";
|
String dataStreamName = "test-datastream";
|
||||||
IndexMetadata indexMetadata = IndexMetadata.builder(dataStreamName + "-000001")
|
IndexMetadata indexMetadata = IndexMetadata.builder(DataStream.getDefaultBackingIndexName(dataStreamName, 1))
|
||||||
.settings(settings(Version.CURRENT))
|
.settings(settings(Version.CURRENT))
|
||||||
.numberOfShards(randomIntBetween(1, 5)).numberOfReplicas(randomIntBetween(0, 5)).build();
|
.numberOfShards(randomIntBetween(1, 5)).numberOfReplicas(randomIntBetween(0, 5)).build();
|
||||||
|
|
||||||
|
@ -6,6 +6,7 @@
|
|||||||
|
|
||||||
package org.elasticsearch.xpack.ilm;
|
package org.elasticsearch.xpack.ilm;
|
||||||
|
|
||||||
|
import org.elasticsearch.cluster.metadata.DataStream;
|
||||||
import org.elasticsearch.cluster.metadata.Template;
|
import org.elasticsearch.cluster.metadata.Template;
|
||||||
import org.elasticsearch.common.settings.Settings;
|
import org.elasticsearch.common.settings.Settings;
|
||||||
import org.elasticsearch.test.rest.ESRestTestCase;
|
import org.elasticsearch.test.rest.ESRestTestCase;
|
||||||
@ -32,9 +33,11 @@ public class TimeSeriesDataStreamsIT extends ESRestTestCase {
|
|||||||
String dataStream = "logs-foo";
|
String dataStream = "logs-foo";
|
||||||
indexDocument(client(), dataStream, true);
|
indexDocument(client(), dataStream, true);
|
||||||
|
|
||||||
assertBusy(() -> assertTrue(indexExists("logs-foo-000002")));
|
assertBusy(() -> assertTrue(indexExists(DataStream.getDefaultBackingIndexName(dataStream, 2))));
|
||||||
assertBusy(() -> assertTrue(Boolean.parseBoolean((String) getIndexSettingsAsMap("logs-foo-000002").get("index.hidden"))));
|
assertBusy(() -> assertTrue(Boolean.parseBoolean((String) getIndexSettingsAsMap(
|
||||||
assertBusy(() -> assertThat(getStepKeyForIndex(client(), "logs-foo-000001"), equalTo(PhaseCompleteStep.finalStep("hot").getKey())));
|
DataStream.getDefaultBackingIndexName(dataStream, 2)).get("index.hidden"))));
|
||||||
|
assertBusy(() -> assertThat(getStepKeyForIndex(client(), DataStream.getDefaultBackingIndexName(dataStream, 1)),
|
||||||
|
equalTo(PhaseCompleteStep.finalStep("hot").getKey())));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -103,7 +103,7 @@
|
|||||||
ilm.explain_lifecycle:
|
ilm.explain_lifecycle:
|
||||||
index: logs-foobar
|
index: logs-foobar
|
||||||
- is_false: indices.logs-foobar.managed
|
- is_false: indices.logs-foobar.managed
|
||||||
- is_true: indices.logs-foobar-000001.managed
|
- is_true: indices.\.ds-logs-foobar-000001.managed
|
||||||
|
|
||||||
- do:
|
- do:
|
||||||
indices.delete_data_stream:
|
indices.delete_data_stream:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user