specification/indices/shrink/IndicesShrinkRequest.ts (27 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 { IndexName, WaitForActiveShards } from '@_types/common' import { Duration } from '@_types/Time' /** * Shrink an index. * Shrink an index into a new index with fewer primary shards. * * Before you can shrink an index: * * * The index must be read-only. * * A copy of every shard in the index must reside on the same node. * * The index must have a green health status. * * To make shard allocation easier, we recommend you also remove the index's replica shards. * You can later re-add replica shards as part of the shrink operation. * * The requested number of primary shards in the target index must be a factor of the number of shards in the source index. * For example an index with 8 primary shards can be shrunk into 4, 2 or 1 primary shards or an index with 15 primary shards can be shrunk into 5, 3 or 1. * If the number of shards in the index is a prime number it can only be shrunk into a single primary shard * Before shrinking, a (primary or replica) copy of every shard in the index must be present on the same node. * * The current write index on a data stream cannot be shrunk. In order to shrink the current write index, the data stream must first be rolled over so that a new write index is created and then the previous write index can be shrunk. * * A shrink operation: * * * Creates a new target index with the same definition as the source index, but with a smaller number of primary shards. * * Hard-links segments from the source index into the target index. If the file system does not support hard-linking, then all segments are copied into the new index, which is a much more time consuming process. Also if using multiple data paths, shards on different data paths require a full copy of segment files if they are not on the same disk since hardlinks do not work across disks. * * Recovers the target index as though it were a closed index which had just been re-opened. Recovers shards to the `.routing.allocation.initial_recovery._id` index setting. * * IMPORTANT: Indices can only be shrunk if they satisfy the following requirements: * * * The target index must not exist. * * The source index must have more primary shards than the target index. * * The number of primary shards in the target index must be a factor of the number of primary shards in the source index. The source index must have more primary shards than the target index. * * The index must not contain more than 2,147,483,519 documents in total across all shards that will be shrunk into a single shard on the target index as this is the maximum number of docs that can fit into a single shard. * * The node handling the shrink process must have sufficient free disk space to accommodate a second copy of the existing index. * @doc_id indices-shrink-index * @rest_spec_name indices.shrink * @availability stack since=5.0.0 stability=stable * @index_privileges manage */ export interface Request extends RequestBase { urls: [ { path: '/{index}/_shrink/{target}' methods: ['PUT', 'POST'] } ] path_parts: { /** * Name of the source index to shrink. */ index: IndexName /** * Name of the target index to create. */ target: IndexName } query_parameters: { /** * 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 } body: { /** * The key is the alias name. * Index alias names support date math. */ aliases?: Dictionary<IndexName, Alias> /** * Configuration options for the target index. */ settings?: Dictionary<string, UserDefinedValue> } }