Set connection details to an Elasticsearch engine.

  host = "",
  port = 9200,
  path = NULL,
  transport_schema = "http",
  user = NULL,
  pwd = NULL,
  headers = NULL,
  cainfo = NULL,
  force = FALSE,
  errors = "simple",
  warn = TRUE,
  ignore_version = FALSE,



(character) The base host, defaults to


(character) port to connect to, defaults to 9200 (optional)


(character) context path that is appended to the end of the url. Default: NULL, ignored


(character) http or https. Default: http


(character) User name, if required for the connection. You can specify, but ignored for now.


(character) Password, if required for the connection. You can specify, but ignored for now.


named list of headers. These headers are used in all requests


(character) path to a crt bundle, passed to curl option cainfo


(logical) Force re-load of connection details. Default: FALSE


(character) One of simple (Default) or complete. Simple gives http code and error message on an error, while complete gives both http code and error message, and stack trace, if available.


(logical) whether to throw warnings from the Elasticsearch server when provided. Pulls warnings from response headers when given. default: TRUE. To turn these off, you can set warn=FALSE or wrap function calls in suppressWarnings(). You can also see warnings in headers by using curl verbose.


(logical) ignore Elasticsearch version checks? default: FALSE. Setting this to TRUE may cause some problems, it has not been fully tested yet. You may want to set this to TRUE if it's not possible to ping the root route of the Elasticsearch instance, which has the Elasticsearch version. We use the version to do alter what request is sent as different Elasticsearch versions allow different parameters.


additional curl options to be passed in ALL http requests


The default configuration is set up for localhost access on port 9200, with no username or password.

Running this connection method doesn't ping the ES server, but only prints your connection details.

All connection details are stored within the returned object. We used to store them in various env vars, but are now contained within the object so you can have any number of connection objects and they shouldn't conflict with one another.

What is the connection object?

Creating a connection object with connect() does not create a DBI-like connection object. DBI-like objects have externalptr, etc., while connect() simply holds details about your Elasticsearch instance (host, port, authentication, etc.) that is used by other methods in this package to interact with your instances' ES API. connect() is more or less a fancy list.

You can connect to different Elasticsearch intances within the same R session by creating a separate connection object for each instance; then pass the appropriate connection object to each elastic method.


if (FALSE) { # the default is set to (i.e., localhost) and port 9200 (x <- connect()) x$make_url() x$ping() # pass connection object to function calls Search(x, q = "*:*") # set username/password (hidden in print method) connect(user = "me", pwd = "stuff") # set a different host # connect(host = '') # => # set a different port # connect(port = 8000) # => http://localhost:8000 # set a different context path # connect(path = 'foo_bar') # => http://localhost:9200/foo_bar # set to https # connect(transport_schema = 'https') # => https://localhost:9200 # set headers connect(headers = list(a = 'foobar')) # set cainfo path (hidden in print method) connect(cainfo = '/some/path/bundle.crt') }