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: Truein 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
Release history Release notifications | RSS feed
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.2.0.tar.gz
(55.4 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file els_utils-0.2.0.tar.gz.
File metadata
- Download URL: els_utils-0.2.0.tar.gz
- Upload date:
- Size: 55.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.5.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
34f56c1d68057f075292961d8a3636dcd82320117f2c84cb011d4fa77239ccd3
|
|
| MD5 |
17edbffc437e5cb4d331738811d86fd2
|
|
| BLAKE2b-256 |
0635f3af43548addf80c00d15cb26c3c0c23883a825522dd017c531727b54ef3
|
File details
Details for the file els_utils-0.2.0-py3-none-any.whl.
File metadata
- Download URL: els_utils-0.2.0-py3-none-any.whl
- Upload date:
- Size: 9.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.5.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a88c151b3c1c82775528d49ef4ba348021a9cdce93b0fb6ae67adfea8b10c219
|
|
| MD5 |
ac94840aea1d8e7af2cf31154e7f3489
|
|
| BLAKE2b-256 |
ac43ebf0582daa5fecccaa7e161116a964441962a8186ed1e5d6d8e0911334db
|