Documentation
¶
Overview ¶
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.
Index ¶
- Variables
- type NewSplit
- type Request
- type Response
- type Split
- func (r *Split) Aliases(aliases map[string]types.Alias) *Split
- func (r Split) Do(providedCtx context.Context) (*Response, error)
- func (r *Split) ErrorTrace(errortrace bool) *Split
- func (r *Split) FilterPath(filterpaths ...string) *Split
- func (r *Split) Header(key, value string) *Split
- func (r *Split) HttpRequest(ctx context.Context) (*http.Request, error)
- func (r *Split) Human(human bool) *Split
- func (r *Split) MasterTimeout(duration string) *Split
- func (r Split) Perform(providedCtx context.Context) (*http.Response, error)
- func (r *Split) Pretty(pretty bool) *Split
- func (r *Split) Raw(raw io.Reader) *Split
- func (r *Split) Request(req *Request) *Split
- func (r *Split) Settings(settings map[string]json.RawMessage) *Split
- func (r *Split) Timeout(duration string) *Split
- func (r *Split) WaitForActiveShards(waitforactiveshards string) *Split
Constants ¶
This section is empty.
Variables ¶
var ErrBuildPath = errors.New("cannot build path, check for missing path parameters")
ErrBuildPath is returned in case of missing parameters within the build of the request.
Functions ¶
This section is empty.
Types ¶
type NewSplit ¶
NewSplit type alias for index.
func NewSplitFunc ¶
func NewSplitFunc(tp elastictransport.Interface) NewSplit
NewSplitFunc returns a new instance of Split with the provided transport. Used in the index of the library this allows to retrieve every apis in once place.
type Request ¶
type Request struct { // Aliases Aliases for the resulting index. Aliases map[string]types.Alias `json:"aliases,omitempty"` // Settings Configuration options for the target index. Settings map[string]json.RawMessage `json:"settings,omitempty"` }
Request holds the request body struct for the package split
type Response ¶ added in v8.7.0
type Response struct { Acknowledged bool `json:"acknowledged"` Index string `json:"index"` ShardsAcknowledged bool `json:"shards_acknowledged"` }
Response holds the response body struct for the package split
type Split ¶
type Split struct {
// contains filtered or unexported fields
}
func New ¶
func New(tp elastictransport.Interface) *Split
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.
https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-split-index.html
func (Split) Do ¶
Do runs the request through the transport, handle the response and returns a split.Response
func (*Split) ErrorTrace ¶ added in v8.14.0
ErrorTrace When set to `true` Elasticsearch will include the full stack trace of errors when they occur. API name: error_trace
func (*Split) FilterPath ¶ added in v8.14.0
FilterPath Comma-separated list of filters in dot notation which reduce the response returned by Elasticsearch. API name: filter_path
func (*Split) HttpRequest ¶
HttpRequest returns the http.Request object built from the given parameters.
func (*Split) Human ¶ added in v8.14.0
Human When set to `true` will return statistics in a format suitable for humans. For example `"exists_time": "1h"` for humans and `"eixsts_time_in_millis": 3600000` for computers. When disabled the human readable values will be omitted. This makes sense for responses being consumed only by machines. API name: human
func (*Split) MasterTimeout ¶
MasterTimeout 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. API name: master_timeout
func (Split) Perform ¶ added in v8.7.0
Perform runs the http.Request through the provided transport and returns an http.Response.
func (*Split) Pretty ¶ added in v8.14.0
Pretty If set to `true` the returned JSON will be "pretty-formatted". Only use this option for debugging only. API name: pretty
func (*Split) Raw ¶
Raw takes a json payload as input which is then passed to the http.Request If specified Raw takes precedence on Request method.
func (*Split) Settings ¶ added in v8.9.0
func (r *Split) Settings(settings map[string]json.RawMessage) *Split
Settings Configuration options for the target index. API name: settings
func (*Split) Timeout ¶
Timeout Period to wait for a response. If no response is received before the timeout expires, the request fails and returns an error. API name: timeout
func (*Split) WaitForActiveShards ¶
WaitForActiveShards 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`). API name: wait_for_active_shards