shrink

package
v8.17.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 17, 2024 License: Apache-2.0 Imports: 12 Imported by: 4

Documentation

Overview

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.

Index

Constants

This section is empty.

Variables

View Source
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 NewShrink

type NewShrink func(index, target string) *Shrink

NewShrink type alias for index.

func NewShrinkFunc

func NewShrinkFunc(tp elastictransport.Interface) NewShrink

NewShrinkFunc returns a new instance of Shrink 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 The key is the alias name.
	// Index alias names support date math.
	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 shrink

https://github.com/elastic/elasticsearch-specification/blob/2f823ff6fcaa7f3f0f9b990dc90512d8901e5d64/specification/indices/shrink/IndicesShrinkRequest.ts#L27-L107

func NewRequest added in v8.5.0

func NewRequest() *Request

NewRequest returns a Request

func (*Request) FromJSON added in v8.5.0

func (r *Request) FromJSON(data string) (*Request, error)

FromJSON allows to load an arbitrary json into the request structure

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 shrink

https://github.com/elastic/elasticsearch-specification/blob/2f823ff6fcaa7f3f0f9b990dc90512d8901e5d64/specification/indices/shrink/IndicesShrinkResponse.ts#L22-L28

func NewResponse added in v8.7.0

func NewResponse() *Response

NewResponse returns a Response

type Shrink

type Shrink struct {
	// contains filtered or unexported fields
}

func New

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.

https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-shrink-index.html

func (*Shrink) Aliases added in v8.9.0

func (r *Shrink) Aliases(aliases map[string]types.Alias) *Shrink

Aliases The key is the alias name. Index alias names support date math. API name: aliases

func (Shrink) Do

func (r Shrink) Do(providedCtx context.Context) (*Response, error)

Do runs the request through the transport, handle the response and returns a shrink.Response

func (*Shrink) ErrorTrace added in v8.14.0

func (r *Shrink) ErrorTrace(errortrace bool) *Shrink

ErrorTrace When set to `true` Elasticsearch will include the full stack trace of errors when they occur. API name: error_trace

func (*Shrink) FilterPath added in v8.14.0

func (r *Shrink) FilterPath(filterpaths ...string) *Shrink

FilterPath Comma-separated list of filters in dot notation which reduce the response returned by Elasticsearch. API name: filter_path

func (*Shrink) Header

func (r *Shrink) Header(key, value string) *Shrink

Header set a key, value pair in the Shrink headers map.

func (*Shrink) HttpRequest

func (r *Shrink) HttpRequest(ctx context.Context) (*http.Request, error)

HttpRequest returns the http.Request object built from the given parameters.

func (*Shrink) Human added in v8.14.0

func (r *Shrink) Human(human bool) *Shrink

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 (*Shrink) MasterTimeout

func (r *Shrink) MasterTimeout(duration string) *Shrink

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 (Shrink) Perform added in v8.7.0

func (r Shrink) Perform(providedCtx context.Context) (*http.Response, error)

Perform runs the http.Request through the provided transport and returns an http.Response.

func (*Shrink) Pretty added in v8.14.0

func (r *Shrink) Pretty(pretty bool) *Shrink

Pretty If set to `true` the returned JSON will be "pretty-formatted". Only use this option for debugging only. API name: pretty

func (*Shrink) Raw

func (r *Shrink) Raw(raw io.Reader) *Shrink

Raw takes a json payload as input which is then passed to the http.Request If specified Raw takes precedence on Request method.

func (*Shrink) Request

func (r *Shrink) Request(req *Request) *Shrink

Request allows to set the request property with the appropriate payload.

func (*Shrink) Settings added in v8.9.0

func (r *Shrink) Settings(settings map[string]json.RawMessage) *Shrink

Settings Configuration options for the target index. API name: settings

func (*Shrink) Timeout

func (r *Shrink) Timeout(duration string) *Shrink

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 (*Shrink) WaitForActiveShards

func (r *Shrink) WaitForActiveShards(waitforactiveshards string) *Shrink

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

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL