Django AnySearch DSL¶
Django AnySearch DSL is a package that allows indexing of Django models in Elasticsearch/OpenSearch. It is built as a thin wrapper around elasticsearch-dsl-py (and OpenSearch alternative).
You can view the full documentation at https://django-anysearch-dsl.readthedocs.io
This project is a fork of django-elasticsearch-dsl with a single ultimate
purpose of supporting both Elasticsearch and OpenSearch. Compatibility is
achieved through anysearch which does necessary import replacements depending
on which one (Elasticsearch or OpenSearch) is chosen (similarly to what
package does to support both 2.x and 3.x branches of Python).
elasticsearch-dslare optional dependencies (as well as
opensearch-dsl) and are installed when instructed (like
pip install django-anysearch-dsl[elasticsearch]or
pip install django-anysearch-dsl[opensearch]).
anysearchis a required dependency.
The plan is to stay in sync with the django-elasticsearch-dsl, so if you’re missing a feature or have a bugfix, please propose it in the upstream.
Submit PRs here only if they are solely related to this package and not the django-elasticsearch-dsl.
Do not propose code style changes or changes that contain reformatting of the code (like
isortfixes). Such things shall be proposed in the django-elasticsearch-dsl. Code changes to this package are kept minimal, so that it’s easier to stay in sync.
Versioning is kept in sync up to the
build (in terms of Semantic
major.minor[.build[.revision]), so version 7.2.2.x of this
library would represent the version 7.2.2 of the upstream. All changes
are mentioned in the changelog.
This library is a drop-in replacement, it does have the same namespace as
django-elasticsearch-dsl, thus you can’t have both installed.
Due to complexities, no support for older versions of Elasticsearch (< 7.x) is provided (and will never be).
Django signal receivers on save and delete for keeping Elasticsearch in sync.
Management commands for creating, deleting, rebuilding and populating indices.
Elasticsearch auto mapping from django models fields.
Complex field type support (ObjectField, NestedField).
Index fast using parallel indexing.
Django >= 2.2
Python 3.6, 3.7, 3.8, 3.9, 3.10 or 3.10.
Elasticsearch Compatibility: The library is compatible with Elasticsearch 7.x, OpenSearch 1.x and OpenSearch 2.x.
# Elasticsearch 7.x elasticsearch-dsl>=7.0.0,<8.0.0 # OpenSearch 1.x opensearch-dsl>=1.0,<2.0 # OpenSearch 2.x opensearch-dsl>=2.0,<3.0