- DESCRIPTION
- ERROR CLASSES

# DESCRIPTION

Errors thrown by Elasticsearch are error objects, which can include a strack trace and information to help debug problems. An error object consists of the following:

        {
            type  => $type,              # eg Missing
            text  => 'Error message',
            vars  => {...},              # vars which may help to explain the error
            stack => [...],              # a stack trace
        }

The `$Elasticsearch::Error::DEBUG` variable can be set to `1` or `2` to increase the verbosity of errors.

# ERROR CLASSES

The following error classes are defined:

- `Elasticsearch::Error::Param`

  A bad parameter has been passed to a method.

- `Elasticsearch::Error::Request`

  There was some generic error performing your request in Elasticsearch. This error is triggered by HTTP status codes `400` and `500`. This class has the following sub-classes:

  - `Elasticsearch::Error::Missing`

    A resource that you requested was not found. These errors are triggered by the `404` HTTP status code.

  - `Elastisearch::Error::Conflict`

    Your request could not be performed because of some conflict. For instance, if you try to delete a document with a particular version number, and the document has already changed, it will throw a `Conflict` error. If it can, it will include the `current_version` in the error vars. This error is triggered by the `409` HTTP status code.

  - `Elasticsearch::Error::ContentLength`

    The request body was longer than the max_content_length.

- `Elasticsearch::Error::Timeout`

  The request timed out.

- `Elasticsearch::Error::Cxn`

  There was an error connecting to a node in the cluster. This error indicates node failure and will be retried on another node. This error has the following sub-class:

  - `Elasticsearch::Error::Unavailable`

    The current node is unable to handle your request at the moment. Your request will be retried on another node. This error is triggered by the `503` HTTP status code.

- `Elasticsearch::Error::ClusterBlocked`

  The cluster was unable to process the request because it is currently blocking, eg there are not enough master nodes to form a cluster. This error is triggered by the `403` HTTP status code.

- `Elasticsearch::Error::Serializer`

  There was an error serializing a variable or deserializing a string.

- `Elasticsarch::Error::Internal`

  An internal error occurred - please report this as a bug in this module.