specification/indices/split/IndicesSplitRequest.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' /** * Split an index. * Split an index into a new index with more primary shards. * * Before you can split an index: * * * The index must be read-only. * * The cluster health status must be green. * * You can do make an index read-only with the following request using the add index block API: * * ``` * PUT /my_source_index/_block/write * ``` * * The current write index on a data stream cannot be split. * In order to split 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 split. * * The number of times the index can be split (and the number of shards that each original shard can be split into) is determined by the `index.number_of_routing_shards` setting. * The number of routing shards specifies the hashing space that is used internally to distribute documents across shards with consistent hashing. * For instance, a 5 shard index with `number_of_routing_shards` set to 30 (5 x 2 x 3) could be split by a factor of 2 or 3. * * A split operation: * * * Creates a new target index with the same definition as the source index, but with a larger number of primary shards. * * Hard-links segments from the source index into the target index. If the file system doesn't support hard-linking, all segments are copied into the new index, which is a much more time consuming process. * * Hashes all documents again, after low level files are created, to delete documents that belong to a different shard. * * Recovers the target index as though it were a closed index which had just been re-opened. * * IMPORTANT: Indices can only be split if they satisfy the following requirements: * * * The target index must not exist. * * The source index must have fewer primary shards than the target index. * * The number of primary shards in the target index must be a multiple of the number of primary shards in the source index. * * The node handling the split process must have sufficient free disk space to accommodate a second copy of the existing index. * @doc_id indices-split-index * @rest_spec_name indices.split * @availability stack since=6.1.0 stability=stable * @index_privileges manage */ export interface Request extends RequestBase { urls: [ { path: '/{index}/_split/{target}' methods: ['PUT', 'POST'] } ] path_parts: { /** * Name of the source index to split. */ 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: { /** * Aliases for the resulting index. */ aliases?: Dictionary<IndexName, Alias> /** * Configuration options for the target index. */ settings?: Dictionary<string, UserDefinedValue> } }