Wrapper around elasticsearch-dsl and opensearch-dsl for Django models
Project description
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
Manifest
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 six package does to support both 2.x and 3.x branches of Python).
Both elasticsearch and elasticsearch-dsl are optional dependencies (as well as opensearch-py and opensearch-dsl) and are installed when instructed (like pip install django-anysearch-dsl[elasticsearch] or pip install django-anysearch-dsl[opensearch]).
anysearch is 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 black or isort fixes). 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 versioning 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).
Features
Based on elasticsearch-dsl-py so you can make queries with the Search class.
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.
Requirements
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
History
7.1.4 (2020-07-05)
Configure Elasticsearch _id dynamically from document (#272)
Use chain.from_iterable in for performance improvement (#278)
Handle case where SimpleLazyObject being treated as an Iterable (#255)
Camelcase default value in management command (#254)
Various updates and fixup in docs (#250, #276)
Start testing against Python 3.8 (#266)
7.1.1 (2019-12-26)
Adding detailed documentation and published to Read The Docs #222
Resolve name resolution while delete, create index (#228)
Added support for Django 3.0. (#230)
Removing old Elasticsearc compatibility (#219)
Drop StringField in favor of TextField.
7.1.0 (2019-10-29)
Support for Django DecimalField #141
Indexing speedup by using parallel indexing. #213. Now you can pass –parallel or set ELASTICSEARCH_DSL_PARALLEL in your settings to get indexing speed boost while indexing through management command.
Fixing name resolution in management command #206
Small documentation fixes. #196
7.0.0 (2019-08-11)
Support Elasticsearch 7.0 (See PR #176)
Added order by to paginate queryset properly (See PR #153)
Remove standard token filter from README.md and test files
Various documentation fixes
6.4.2 (2019-07-26)
Fix document importing path
Update readme
6.4.1 (2019-06-14)
The DocType import has changed to Document
6.4.0 (2019-06-01)
Support elasticsearch-dsl>6.3.0
Class Meta has changed to class Django (See PR #136)
Add register_document decorator to register a document (See PR #136)
Additional Bug fixing and others
0.5.1 (2018-11-07)
Limit elastsearch-dsl to supported versions
0.5.0 (2018-04-22)
Add Support for Elasticsearch 6 thanks to HansAdema
Breaking Change:
Django string fields now point to ES text field by default. Nothing should change for ES 2.X but if you are using ES 5.X, you may need to rebuild and/or update some of your documents.
0.4.5 (2018-04-22)
Fix prepare with related models when deleted (See PR #99)
Fix unwanted calls to get_instances_from_related
Fix for empty ArrayField (CBinyenya)
Fix nested OneToOneField when related object doesn’t exist (CBinyenya)
Update elasticsearch-dsl minimal version
0.4.4 (2017-12-13)
Fix to_queryset with es 5.0/5.1
0.4.3 (2017-12-12)
Fix syncing of related objects when deleted
Add django 2.0 support
0.4.2 (2017-11-27)
Convert lazy string to string before serialization
Readme update (arielpontes)
0.4.1 (2017-10-17)
Update example app with get_instances_from_related
Typo/grammar fixes
0.4.0 (2017-10-07)
Add a method on the Search class to return a django queryset from an es result
Add a queryset_pagination option to DocType.Meta for allow the pagination of big django querysets during the index populating
Remove the call to iterator method for the django queryset
Fix DocType inheritance. The DocType is store in the registry as a class and not anymore as an instance
0.3.0 (2017-10-01)
Add support for resynching ES documents if related models are updated (HansAdema)
Better management for django FileField and ImageField
Fix some errors in the doc (barseghyanartur, diwu1989)
0.2.0 (2017-07-02)
Replace simple model signals with easier to customise signal processors (barseghyanartur)
Add options to disable automatic index refreshes (HansAdema)
Support defining DocType indexes through Meta class (HansAdema)
Add option to set default Index settings through Django config (HansAdema)
0.1.0 (2017-05-26)
First release on PyPI.
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
Built Distribution
Hashes for django-anysearch-dsl-7.2.2.1.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 121bf5d994263662eb94ff3a80c749537099cef5e31fc2176091a44664c93bd4 |
|
MD5 | eb0fe8c539e33cb379f00823a577126a |
|
BLAKE2b-256 | 65ad882cf6b35bdc1e6820f4774c00c9fda434737e5629049017a19d7fede283 |
Hashes for django_anysearch_dsl-7.2.2.1-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 03c06323a9d7c397bc53dadc4c4eece2993a19fad5e9bad2d74145223396113a |
|
MD5 | 980230eaca1888b78ec43bd05568a22f |
|
BLAKE2b-256 | 74309daa6b51171235d8c2138e1fdad0f8e316acda6b49b1aff80bf24be8f407 |