elasticwrapper
Elasticsearch offers (major) API-versioned packages for its Python SDK, called elasticsearch2
,
elasticsearch5
and so on.
This wrapper connects to the given URL, retrieves the major version and imports the versioned
module according to that.
Usage examples:
from elasticwrapper import elasticsearch
es = elasticsearch.Elasticsearch()
res = es.search(index="*", body={})
This will connect to the default http://localhost:9200/
URL.
Customizing the wrapper
You can override defaults in the following ways:
With environment variables
You can set the Elasticsearch URL with the following environment variable:
ELASTICWRAPPER_URL=http://localhost:9200 python -c "from elasticwrapper import elasticsearch; print(elasticsearch)"
And the connect timeout with:
ELASTICWRAPPER_TIMEOUT
(specified in seconds)
builtins
Through The URL can be set from code as well, either by setting the above environment variable (before)
the import, or by through the builtins
module:
# anywhere in the code before the `elasticwrapper` import
import builtins
builtins.elasticwrapper_url = "http://localhost:9200"
builtins.elasticwrapper_timeout = 30
# anywhere in the code after variables has been set up in `builtins`
from elasticwrapper import elasticsearch
Caveats
Elasticwrapper (currently) does nothing more than selecting the right (major) elasticsearch
module to be imported and imports it under elasticwrapper.elasticsearch
.
Be aware, that elasticsearch
might be incompatible with your Elasticsearch cluster even in the
same major version (like 7.x
).
Also, elasticwrapper
currently does nothing to provide API compatibility, so different SDK versions
might (and will) need different syntax.