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.3.7.tar.gz
(57.5 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
els_utils-0.3.7-py3-none-any.whl
(11.3 kB
view details)
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1d6de606f0f097d1174643d996434dc15f694af635a2483d997e2c3703541b12
|
|
| MD5 |
55a4b719293b6c5b6d6d3223f6594084
|
|
| BLAKE2b-256 |
441193cb0eb9d4db7330f788cacbc5ec096151508f0a344ec99d6646754056dd
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3525c43f84a46bd7940f63d66113859deb5d0f5395c34576790458a9ce012bd7
|
|
| MD5 |
b0e88c79867b3a3b2f324906e5625ed0
|
|
| BLAKE2b-256 |
7530373a46a59c6bc4e9f41ee76b3040564a0d3106f8491adc9d6d8b7a4ae728
|