specification/indices/rollover/IndicesRolloverRequest.ts (37 lines of code) (raw):
/*
* Licensed to Elasticsearch B.V. under one or more contributor
* license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright
* ownership. Elasticsearch B.V. licenses this file to you under
* the Apache License, Version 2.0 (the "License"); you may
* not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
import { Alias } from '@indices/_types/Alias'
import { Dictionary } from '@spec_utils/Dictionary'
import { UserDefinedValue } from '@spec_utils/UserDefinedValue'
import { RequestBase } from '@_types/Base'
import { IndexAlias, IndexName, WaitForActiveShards } from '@_types/common'
import { TypeMapping } from '@_types/mapping/TypeMapping'
import { Duration } from '@_types/Time'
import { RolloverConditions } from './types'
/**
* Roll over to a new index.
* TIP: It is recommended to use the index lifecycle rollover action to automate rollovers.
*
* The rollover API creates a new index for a data stream or index alias.
* The API behavior depends on the rollover target.
*
* **Roll over a data stream**
*
* If you roll over a data stream, the API creates a new write index for the stream.
* The stream's previous write index becomes a regular backing index.
* A rollover also increments the data stream's generation.
*
* **Roll over an index alias with a write index**
*
* TIP: Prior to Elasticsearch 7.9, you'd typically use an index alias with a write index to manage time series data.
* Data streams replace this functionality, require less maintenance, and automatically integrate with data tiers.
*
* If an index alias points to multiple indices, one of the indices must be a write index.
* The rollover API creates a new write index for the alias with `is_write_index` set to `true`.
* The API also `sets is_write_index` to `false` for the previous write index.
*
* **Roll over an index alias with one index**
*
* If you roll over an index alias that points to only one index, the API creates a new index for the alias and removes the original index from the alias.
*
* NOTE: A rollover creates a new index and is subject to the `wait_for_active_shards` setting.
*
* **Increment index names for an alias**
*
* When you roll over an index alias, you can specify a name for the new index.
* If you don't specify a name and the current index ends with `-` and a number, such as `my-index-000001` or `my-index-3`, the new index name increments that number.
* For example, if you roll over an alias with a current index of `my-index-000001`, the rollover creates a new index named `my-index-000002`.
* This number is always six characters and zero-padded, regardless of the previous index's name.
*
* If you use an index alias for time series data, you can use date math in the index name to track the rollover date.
* For example, you can create an alias that points to an index named `<my-index-{now/d}-000001>`.
* If you create the index on May 6, 2099, the index's name is `my-index-2099.05.06-000001`.
* If you roll over the alias on May 7, 2099, the new index's name is `my-index-2099.05.07-000002`.
* @doc_id indices-rollover-index
* @rest_spec_name indices.rollover
* @availability stack since=5.0.0 stability=stable
* @availability serverless stability=stable visibility=public
* @index_privileges manage
*/
export interface Request extends RequestBase {
urls: [
{
path: '/{alias}/_rollover'
methods: ['POST']
},
{
path: '/{alias}/_rollover/{new_index}'
methods: ['POST']
}
]
path_parts: {
/**
* Name of the data stream or index alias to roll over.
*/
alias: IndexAlias
/**
* Name of the index to create.
* Supports date math.
* Data streams do not support this parameter.
*/
new_index?: IndexName
}
query_parameters: {
/**
* If `true`, checks whether the current index satisfies the specified conditions but does not perform a rollover.
* @server_default false
*/
dry_run?: boolean
/**
* Period to wait for a connection to the master node.
* If no response is received before the timeout expires, the request fails and returns an error.
* @server_default 30s
*/
master_timeout?: Duration
/**
* Period to wait for a response.
* If no response is received before the timeout expires, the request fails and returns an error.
* @server_default 30s
*/
timeout?: Duration
/**
* The number of shard copies that must be active before proceeding with the operation.
* Set to all or any positive integer up to the total number of shards in the index (`number_of_replicas+1`).
* @server_default 1
*/
wait_for_active_shards?: WaitForActiveShards
/**
* If set to true, the rollover action will only mark a data stream to signal that it needs to be rolled over at the next write.
* Only allowed on data streams.
* @server_default false
*/
lazy?: boolean
}
body: {
/**
* Aliases for the target index.
* Data streams do not support this parameter.
*/
aliases?: Dictionary<IndexName, Alias>
/**
* Conditions for the rollover.
* If specified, Elasticsearch only performs the rollover if the current index satisfies these conditions.
* If this parameter is not specified, Elasticsearch performs the rollover unconditionally.
* If conditions are specified, at least one of them must be a `max_*` condition.
* The index will rollover if any `max_*` condition is satisfied and all `min_*` conditions are satisfied.
*/
conditions?: RolloverConditions
/**
* Mapping for fields in the index.
* If specified, this mapping can include field names, field data types, and mapping paramaters.
*/
mappings?: TypeMapping
/**
* Configuration options for the index.
* Data streams do not support this parameter.
*/
settings?: Dictionary<string, UserDefinedValue>
}
}