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

How-to

In elasticsearch-dsl you would do:

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

In opensearch-dsl you would do:

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

With anysearch you would change that to:

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

django-elasticsearch-dsl/django-opensearch-dsl

How-to

In django-elasticsearch-dsl you would do:

from django_elasticsearch_dsl import fields, registry
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, registry
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, registry
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.2.tar.gz (11.0 kB view details)

Uploaded Source

Built Distribution

anysearch-0.1.2-py2.py3-none-any.whl (8.3 kB view details)

Uploaded Python 2 Python 3

File details

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

File metadata

  • Download URL: anysearch-0.1.2.tar.gz
  • Upload date:
  • Size: 11.0 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.2.tar.gz
Algorithm Hash digest
SHA256 dd3585537e2916df656a5c6f0025efa13a07e2ca77231ccc6d8a0e30fda7ff28
MD5 693b1103b943f475d58533a1e4cab2af
BLAKE2b-256 eb8ece80b2bd265f0fddecc68ad84a2840ea174ba78e779a4a85bce65c52e83e

See more details on using hashes here.

File details

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

File metadata

  • Download URL: anysearch-0.1.2-py2.py3-none-any.whl
  • Upload date:
  • Size: 8.3 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.2-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 e47c514171ff2ba6832502eb721e89b07d172d7b5c00a64665f134ce082b1c09
MD5 86f1a03d59523d03b6fd6afaabd435ac
BLAKE2b-256 f432f79fe8666a846a29f6401ab27d4757979290ae0e97e96b839c0697ddb6ad

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