Skip to main content

Elasticsearch and OpenSearch compatibility library.

Project description

AnySearch is a Elasticsearch and OpenSearch compatibility library. It provides utility functions for smoothing over the differences between the Python libraries with the goal of writing Python code that is compatible on both (including the *search, *search-dsl and django-*search-dsl integration packages).

See the documentation for more information on what is provided.

PyPI Version Supported Python versions Build Status Documentation Status MIT Coverage

Documentation

Documentation is available on Read the Docs.

Prerequisites

  • Python 3.7, 3.8, 3.9 and 3.10.

Installation

Install latest stable version from PyPI:

pip install anysearch

or latest stable version from GitHub:

pip install https://github.com/barseghyanartur/anysearch/archive/main.tar.gz

Configuration

AnySearch automatically detects whether you use Elasticsearch or OpenSearch by looking at which packages are installed. However, if you have both packages installed and you can instruct AnySearch which one do you actually want to use. The way to do that is to set the ANYSEARCH_PREFERRED_BACKEND environment variable to either Elasticsearch or OpenSearch.

For Elasticsearch:

import os
os.environ.setdefault("ANYSEARCH_PREFERRED_BACKEND", "Elasticsearch")

For OpenSearch:

import os
os.environ.setdefault("ANYSEARCH_PREFERRED_BACKEND", "OpenSearch")

Usage

elasticsearch-dsl/opensearch-dsl

In elasticsearch-dsl you would do:

from elasticsearch_dsl import connections
from elasticsearch_dsl import Keyword
from elasticsearch_dsl.document import Document

In opensearch-dsl you would do:

from opensearch_dsl import connections
from opensearch_dsl import Keyword
from opensearch_dsl.document import Document

With anysearch you would change that to:

from anysearch.search_dsl import connections
from anysearch.search_dsl import Keyword
from anysearch.search_dsl.document import Document

django-elasticsearch-dsl/django-opensearch-dsl

In django-elasticsearch-dsl you would do:

from django_elasticsearch_dsl import fields
from django_elasticsearch_dsl.documents import Document
from django_elasticsearch_dsl.fields import TextField

In opensearch-dsl you would do:

from django_opensearch_dsl import fields
from django_opensearch_dsl.documents import Document
from django_opensearch_dsl.fields import TextField

With anysearch you would change that to:

from anysearch.django_search_dsl import fields
from anysearch.django_search_dsl.documents import Document
from anysearch.django_search_dsl.fields import TextField

Testing

Project is covered with tests.

To test with all supported Python versions type:

tox

To test against specific environment, type:

tox -e py39

To test just your working environment type:

pytest

To run a single test in your working environment type:

pytest test_anysearch.py

To run a single test class in a given test module in your working environment type:

pytest test_anysearch.py::DjangoSearchDSLTestCase

It’s assumed that you have either elasticsearch-dsl or opensearch-dsl installed. If not, install the requirements first.

Writing documentation

Keep the following hierarchy.

=====
title
=====

header
======

sub-header
----------

sub-sub-header
~~~~~~~~~~~~~~

sub-sub-sub-header
^^^^^^^^^^^^^^^^^^

sub-sub-sub-sub-header
++++++++++++++++++++++

sub-sub-sub-sub-sub-header
**************************

License

MIT

Support

For any security issues contact me at the e-mail given in the Author section. For overall issues, go to GitHub.

Author

Artur Barseghyan <artur.barseghyan@gmail.com>

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

anysearch-0.1.tar.gz (10.8 kB view details)

Uploaded Source

Built Distribution

anysearch-0.1-py2.py3-none-any.whl (8.0 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file anysearch-0.1.tar.gz.

File metadata

  • Download URL: anysearch-0.1.tar.gz
  • Upload date:
  • Size: 10.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.9.13

File hashes

Hashes for anysearch-0.1.tar.gz
Algorithm Hash digest
SHA256 90e1f98845bffd2d26903d8a779899470407817a17939a61a26edd8b24a7f189
MD5 6912272b6028e8ef5f0014fb3633d771
BLAKE2b-256 84281c2e9459577293057c36494ec96cc41422879da7e9ef63aa358e40244b24

See more details on using hashes here.

File details

Details for the file anysearch-0.1-py2.py3-none-any.whl.

File metadata

  • Download URL: anysearch-0.1-py2.py3-none-any.whl
  • Upload date:
  • Size: 8.0 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.9.13

File hashes

Hashes for anysearch-0.1-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 9a182f0e1a3dbef2162ef7c1d8e47ae22fb60ae32675f71fd954ded44a87ed45
MD5 f592caf6292ff9068b4a84e8fb62a386
BLAKE2b-256 6b26035d1c5381c1096c09e85939493fb072c55580e7774dda1d2b2ae1e74019

See more details on using hashes here.

Supported by

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