Search::Elasticsearch::Error - Errors thrown by Search::Elasticsearch


version 8.00


Errors thrown by Search::Elasticsearch are error objects, which can include a stack 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 $Search::Elasticsearch::Error::DEBUG variable can be set to 1 or 2 to increase the verbosity of errors.

Error objects stringify to a human readable error message when used in text context (for example: print 'Oh no! '.$error). They also support the TO_JSON method to support conversion to JSON when "convert_blessed" in JSON is enabled.


The following error classes are defined:

  • Search::Elasticsearch::Error::Param

    A bad parameter has been passed to a method.

  • Search::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:

    • Search::Elasticsearch::Error::Unauthorized

      Invalid (or no) username/password provided as userinfo for a password protected service. These errors are triggered by the 401 HTTP status code.

    • Search::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.

    • Search::Elasticsearch::Error::ContentLength

      The request body was longer than the max_content_length.

    • Search::Elasticsearch::Error::RequestTimeout

      The request took longer than the specified timeout. Currently only applies to the cluster_health request.

  • Search::Elasticsearch::Error::Timeout

    The request timed out.

  • Search::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-classes:

    • Search::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.

    • Search::Elasticsearch::Error::BadGateway

      A proxy between the client and Elasticsearch is unable to connect to Elasticsearch. This error is triggered by the 502 HTTP status code.

    • Search::Elasticsearch::Error::GatewayTimeout

      A proxy between the client and Elasticsearch is unable to connect to Elasticsearch within its own timeout. This error is triggered by the 504 HTTP status code.

    • Search::Elasticsearch::Error::SSL

      There was a problem validating the SSL certificate. Not all backends support this error type.

  • Search::Elasticsearch::Error::Forbidden

    Either the cluster was unable to process the request because it is currently blocking, eg there are not enough master nodes to form a cluster, or because the authenticated user is trying to perform an unauthorized action. This error is triggered by the 403 HTTP status code.

  • Search::Elasticsearch::Error::Illegal

    You have attempted to perform an illegal operation. For instance, you attempted to use a Scroll helper in a different process after forking.

  • Search::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.


Enrico Zimuel <>


This software is Copyright (c) 2022 by Elasticsearch BV.

This is free software, licensed under:

  The Apache License, Version 2.0, January 2004