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 ¶
- Variables
- type NewShrink
- type Request
- type Response
- type Shrink
- func (r *Shrink) Aliases(aliases map[string]types.Alias) *Shrink
- func (r Shrink) Do(providedCtx context.Context) (*Response, error)
- func (r *Shrink) ErrorTrace(errortrace bool) *Shrink
- func (r *Shrink) FilterPath(filterpaths ...string) *Shrink
- func (r *Shrink) Header(key, value string) *Shrink
- func (r *Shrink) HttpRequest(ctx context.Context) (*http.Request, error)
- func (r *Shrink) Human(human bool) *Shrink
- func (r *Shrink) MasterTimeout(duration string) *Shrink
- func (r Shrink) Perform(providedCtx context.Context) (*http.Response, error)
- func (r *Shrink) Pretty(pretty bool) *Shrink
- func (r *Shrink) Raw(raw io.Reader) *Shrink
- func (r *Shrink) Request(req *Request) *Shrink
- func (r *Shrink) Settings(settings map[string]json.RawMessage) *Shrink
- func (r *Shrink) Timeout(duration string) *Shrink
- func (r *Shrink) WaitForActiveShards(waitforactiveshards string) *Shrink
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 NewShrink ¶
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
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
type Shrink ¶
type Shrink struct {
// contains filtered or unexported fields
}
func New ¶
func New(tp elastictransport.Interface) *Shrink
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
Aliases The key is the alias name. Index alias names support date math. API name: aliases
func (Shrink) Do ¶
Do runs the request through the transport, handle the response and returns a shrink.Response
func (*Shrink) 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 (*Shrink) 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 (*Shrink) HttpRequest ¶
HttpRequest returns the http.Request object built from the given parameters.
func (*Shrink) 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 (*Shrink) 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 (Shrink) Perform ¶ added in v8.7.0
Perform runs the http.Request through the provided transport and returns an http.Response.
func (*Shrink) 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 (*Shrink) 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 (*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 ¶
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 ¶
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