Skip to main content

A simple wrapper for Elasticsearch tool

Project description

els-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 els-utils

Example usage

Instantiate

from els_utils import ELS


# Using API key to authenticate
els = ELS(ES_ENDPOINT, api_key=ES_API_KEY)

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

Create index

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

els.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"}]

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

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

Results

dsl = {"query": {...}}
results = els.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 = els.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 scores breakdown
explain.get_scores_breakdown(as_df=False)  # If you wish to return a DataFrame, can pass `as_df=True`

# Get the scores terms, e.g., tf, idf, boost for each field
explain.get_scores_term(as_df=False)

# Get the contributions summary for each field
explain.get_scores_summary()  # You can also pass in `as_df` parameter

Using the explanation from the search API

dsl = {"explain": True, "query": {...}}
results = els.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_scores_term()  # Given that the key "75720" exists in the results

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

els_utils-0.3.7.tar.gz (57.5 kB view details)

Uploaded Source

Built Distribution

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

els_utils-0.3.7-py3-none-any.whl (11.3 kB view details)

Uploaded Python 3

File details

Details for the file els_utils-0.3.7.tar.gz.

File metadata

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

File hashes

Hashes for els_utils-0.3.7.tar.gz
Algorithm Hash digest
SHA256 1d6de606f0f097d1174643d996434dc15f694af635a2483d997e2c3703541b12
MD5 55a4b719293b6c5b6d6d3223f6594084
BLAKE2b-256 441193cb0eb9d4db7330f788cacbc5ec096151508f0a344ec99d6646754056dd

See more details on using hashes here.

File details

Details for the file els_utils-0.3.7-py3-none-any.whl.

File metadata

  • Download URL: els_utils-0.3.7-py3-none-any.whl
  • Upload date:
  • Size: 11.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.5.11

File hashes

Hashes for els_utils-0.3.7-py3-none-any.whl
Algorithm Hash digest
SHA256 3525c43f84a46bd7940f63d66113859deb5d0f5395c34576790458a9ce012bd7
MD5 b0e88c79867b3a3b2f324906e5625ed0
BLAKE2b-256 7530373a46a59c6bc4e9f41ee76b3040564a0d3106f8491adc9d6d8b7a4ae728

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