reroute

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

Reroute the cluster. Manually change the allocation of individual shards in the cluster. For example, a shard can be moved from one node to another explicitly, an allocation can be canceled, and an unassigned shard can be explicitly allocated to a specific node.

It is important to note that after processing any reroute commands Elasticsearch will perform rebalancing as normal (respecting the values of settings such as `cluster.routing.rebalance.enable`) in order to remain in a balanced state. For example, if the requested allocation includes moving a shard from node1 to node2 then this may cause a shard to be moved from node2 back to node1 to even things out.

The cluster can be set to disable allocations using the `cluster.routing.allocation.enable` setting. If allocations are disabled then the only allocations that will be performed are explicit ones given using the reroute command, and consequent allocations due to rebalancing.

The cluster will attempt to allocate a shard a maximum of `index.allocation.max_retries` times in a row (defaults to `5`), before giving up and leaving the shard unallocated. This scenario can be caused by structural problems such as having an analyzer which refers to a stopwords file which doesn’t exist on all nodes.

Once the problem has been corrected, allocation can be manually retried by calling the reroute API with the `?retry_failed` URI query parameter, which will attempt a single retry round for these shards.

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 NewReroute

type NewReroute func() *Reroute

NewReroute type alias for index.

func NewRerouteFunc

func NewRerouteFunc(tp elastictransport.Interface) NewReroute

NewRerouteFunc returns a new instance of Reroute 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 {

	// Commands Defines the commands to perform.
	Commands []types.Command `json:"commands,omitempty"`
}

Request holds the request body struct for the package reroute

https://github.com/elastic/elasticsearch-specification/blob/2f823ff6fcaa7f3f0f9b990dc90512d8901e5d64/specification/cluster/reroute/ClusterRerouteRequest.ts#L25-L85

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 Reroute

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

func New

Reroute the cluster. Manually change the allocation of individual shards in the cluster. For example, a shard can be moved from one node to another explicitly, an allocation can be canceled, and an unassigned shard can be explicitly allocated to a specific node.

It is important to note that after processing any reroute commands Elasticsearch will perform rebalancing as normal (respecting the values of settings such as `cluster.routing.rebalance.enable`) in order to remain in a balanced state. For example, if the requested allocation includes moving a shard from node1 to node2 then this may cause a shard to be moved from node2 back to node1 to even things out.

The cluster can be set to disable allocations using the `cluster.routing.allocation.enable` setting. If allocations are disabled then the only allocations that will be performed are explicit ones given using the reroute command, and consequent allocations due to rebalancing.

The cluster will attempt to allocate a shard a maximum of `index.allocation.max_retries` times in a row (defaults to `5`), before giving up and leaving the shard unallocated. This scenario can be caused by structural problems such as having an analyzer which refers to a stopwords file which doesn’t exist on all nodes.

Once the problem has been corrected, allocation can be manually retried by calling the reroute API with the `?retry_failed` URI query parameter, which will attempt a single retry round for these shards.

https://www.elastic.co/guide/en/elasticsearch/reference/current/cluster-reroute.html

func (*Reroute) Commands added in v8.9.0

func (r *Reroute) Commands(commands ...types.Command) *Reroute

Commands Defines the commands to perform. API name: commands

func (Reroute) Do

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

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

func (*Reroute) DryRun

func (r *Reroute) DryRun(dryrun bool) *Reroute

DryRun If true, then the request simulates the operation. It will calculate the result of applying the commands to the current cluster state and return the resulting cluster state after the commands (and rebalancing) have been applied; it will not actually perform the requested changes. API name: dry_run

func (*Reroute) ErrorTrace added in v8.14.0

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

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

func (*Reroute) Explain

func (r *Reroute) Explain(explain bool) *Reroute

Explain If true, then the response contains an explanation of why the commands can or cannot run. API name: explain

func (*Reroute) FilterPath added in v8.14.0

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

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

func (*Reroute) Header

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

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

func (*Reroute) HttpRequest

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

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

func (*Reroute) Human added in v8.14.0

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

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

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

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 (*Reroute) Metric

func (r *Reroute) Metric(metrics ...string) *Reroute

Metric Limits the information returned to the specified metrics. API name: metric

func (Reroute) Perform added in v8.7.0

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

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

func (*Reroute) Pretty added in v8.14.0

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

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

func (*Reroute) Raw

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

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

func (*Reroute) Request

func (r *Reroute) Request(req *Request) *Reroute

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

func (*Reroute) RetryFailed

func (r *Reroute) RetryFailed(retryfailed bool) *Reroute

RetryFailed If true, then retries allocation of shards that are blocked due to too many subsequent allocation failures. API name: retry_failed

func (*Reroute) Timeout

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

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

type Response added in v8.7.0

type Response struct {
	Acknowledged bool                       `json:"acknowledged"`
	Explanations []types.RerouteExplanation `json:"explanations,omitempty"`
	// State There aren't any guarantees on the output/structure of the raw cluster state.
	// Here you will find the internal representation of the cluster, which can
	// differ from the external representation.
	State json.RawMessage `json:"state,omitempty"`
}

Response holds the response body struct for the package reroute

https://github.com/elastic/elasticsearch-specification/blob/2f823ff6fcaa7f3f0f9b990dc90512d8901e5d64/specification/cluster/reroute/ClusterRerouteResponse.ts#L23-L34

func NewResponse added in v8.7.0

func NewResponse() *Response

NewResponse returns a Response

Jump to

Keyboard shortcuts

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