Skip to main content

A simple wrapper for Elasticsearch tool

Project description

elasticsearch-utils

This library provides utilities for interacting with Elasticsearch and results retrived from it.

The core features are:

  • Index creation (even if already exists)
  • Index deletion
  • Search (can include explain: True in the DSL query)
  • Explain

Installation

uv add elasticsearch-utils

Example usage

Instantiate

from elasticsearch_utils import ESClient


# Using API key to authenticate
es = ESClient(ES_ENDPOINT, api_key=ES_API_KEY)

# Using basic authen with username and password
es = ELS(ES_ENDPOINT, basic_authen=(USERNAME, PASSWORD))

Create index

mapping = {"mappings": {"properties": {...}}}

es.create_index(index_name="my-index", json_mapping=mapping, replace_if_exists=True)

Bulk update

data = [{"some-id": "1", "field1": "some-value"}, {"some-id": "2", "field1": "another-value"}]

es.bulk_update(index_name="my-index", data=data, id_key="some-id")

# Routing option is also available if needed
es.bulk_update(index_name="my-index", data=data, id_key="some-id", routing_key="1")

Results

dsl = {"query": {...}}
results = es.search(INDEX_NAME, dsl)

# results: <SearchResults total_hits=510>

# Get the JSON
results.json

# Get the hits
result.hits

# Get the sources
results.get_sources(as_list=False)  # as_list can be `True` if you wish to get just a list of sources

# Get results in a DataFrame format
results.to_dataframe()

# You can also pass in just the columns you want
results.to_dataframe(columns=["field1"])

# If explain: True was passed in the DSL, you can also get explanations
results.get_explanations()  # This returns a dict of {`_id`: `<ExplainResult>`}

Explanation

Using the explain API

dsl = {"query": {...}}
explain = es.explain(INDEX_NAME, doc_id="75720", dsl=dsl, routing=None)

# Get the JSON
explain.json

# Get score
explain.score

# Get the explanation dict
explain.explanation

# Get the scores terms, e.g., field, term, score, boost, etc.
explain.get_field_details()

# Get the contributions summary for each field
explain.get_field_summary()

Using the explanation from the search API

dsl = {"explain": True, "query": {...}}
results = es.search(INDEX_NAME, dsl=dsl)

# This returns a dict of {`_id`: `<ExplainResult>`}
explanations = results.get_explanations()

# You can do the same thing as the `ExplainResult` for each item
explanations["75720"].get_field_summary()  # Given that the key "75720" exists in the results

Index Mappings and settings

mappings_results = es.get_mappings(INDEX_NAME)

mapping_results.fields_mappings
settings_results = es.get_settings(INDEX_NAME)

settings_results.index_settings

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

elasticsearch_utils-0.6.0.tar.gz (60.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

elasticsearch_utils-0.6.0-py3-none-any.whl (14.0 kB view details)

Uploaded Python 3

File details

Details for the file elasticsearch_utils-0.6.0.tar.gz.

File metadata

  • Download URL: elasticsearch_utils-0.6.0.tar.gz
  • Upload date:
  • Size: 60.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.5.11

File hashes

Hashes for elasticsearch_utils-0.6.0.tar.gz
Algorithm Hash digest
SHA256 d3847256a28311fd3c02586140ed7e5b6c3a8d1650af79146bd872eb06f8ab53
MD5 58395ef03d90500e8c8cba2a43d75b47
BLAKE2b-256 aec06214f798456c48d996fcd43e6bb94378f0013930ece0720739235cafb227

See more details on using hashes here.

File details

Details for the file elasticsearch_utils-0.6.0-py3-none-any.whl.

File metadata

File hashes

Hashes for elasticsearch_utils-0.6.0-py3-none-any.whl
Algorithm Hash digest
SHA256 26f9a21645dca8ed8cc8581313c092fa8c732767cfbeb9c6210c0b7466f9b5a9
MD5 37de03b295b96f4bf2d79d627eb9c45e
BLAKE2b-256 9d0d54edd5941ed4338229c3db6bcf7e78b246f1031c88af61607075ce3e23e5

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page