django-opensearch-dsl


Namedjango-opensearch-dsl JSON
Version 0.6.2 PyPI version JSON
download
home_pagehttps://github.com/qcoumes/django-opensearch-dsl
SummaryWrapper around opensearch-py for django models
upload_time2024-04-23 21:42:36
maintainerNone
docs_urlNone
authorQuentin Coumes (Codoc)
requires_pythonNone
licenseApache Software License 2.0
keywords django elasticsearch elasticsearch-dsl opensearch opensearch-dsl opensearch-py
VCS
bugtrack_url
requirements django opensearch-py python-dateutil
Travis-CI No Travis.
coveralls test coverage No coveralls.
            Django Opensearch DSL
=====================

[![PyPI Version](https://badge.fury.io/py/django-opensearch-dsl.svg)](https://badge.fury.io/py/django-opensearch-dsl)
[![Documentation Status](https://readthedocs.org/projects/django-opensearch-dsl/badge/?version=latest)](https://django-opensearch-dsl.readthedocs.io/en/latest/?badge=latest)
![Tests](https://github.com/Codoc-os/django-opensearch-dsl/workflows/Tests/badge.svg)
[![Python 3.9+](https://img.shields.io/badge/Python-3.9+-brightgreen.svg)](#)
[![Django 3.2+](https://img.shields.io/badge/Django-3.2+-brightgreen.svg)](#)
[![OpenSearch 1.3+, 2.7+](https://img.shields.io/badge/OpenSearch-1.3+-brightgreen.svg)](#)
[![License Apache 2](https://img.shields.io/badge/license-Apache%202-brightgreen.svg)](https://github.com/Codoc-os/django-opensearch-dsl/blob/master/LICENSE)
[![codecov](https://codecov.io/gh/Codoc-os/django-opensearch-dsl/branch/master/graph/badge.svg)](https://codecov.io/gh/Codoc-os/django-opensearch-dsl)
[![CodeFactor](https://www.codefactor.io/repository/github/Codoc-os/django-opensearch-dsl/badge)](https://www.codefactor.io/repository/github/Codoc-os/django-opensearch-dsl)

**Django Opensearch DSL** is a package that allows the indexing of Django models in opensearch. It is built as a thin
wrapper around [`opensearch-py`](https://github.com/opensearch-project/opensearch-py)
so you can use all the features developed by the `opensearch-py` team.

You can view the full documentation
at [https://django-opensearch-dsl.readthedocs.io](https://django-opensearch-dsl.readthedocs.io/en/latest/).

## Features

- Based on [`opensearch-py`](https://github.com/opensearch-project/opensearch-py) so you can make queries with
  the [`Search`](https://elasticsearch-dsl.readthedocs.io/en/latest/search_dsl.html#the-search-object)
  object.
- Management commands for creating, deleting, and populating indices and documents.
- Opensearch auto mapping from Django models fields.
- Complex field type support (`ObjectField`, `NestedField`).
- Index fast using `parallel` indexing.

## Requirements

`django-opensearch-dsl` only support the supported version of each dependency (mainstream & lts).

* `Python` ([supported versions](https://devguide.python.org/versions/))
* `Django` ([supported versions](https://www.djangoproject.com/download/#supported-versions))
* `opensearch-py` ([compatibility matrix](https://github.com/opensearch-project/opensearch-py/blob/main/COMPATIBILITY.md))

## Installation and Configuration

The easiest way to install `django-opensearch-dsl` is through `pip`:

* `pip install django-opensearch-dsl`

Then add `django_opensearch_dsl` to your `INSTALLED_APPS` settings.

You must then define `OPENSEARCH_DSL` in your Django settings.

For example:

```python
OPENSEARCH_DSL = {
    'default': {
        'hosts': 'localhost:9200'
    },
    'secure': {
        'hosts': [{"scheme": "https", "host": "192.30.255.112", "port": 9201}],
        'http_auth': ("admin", "password"),
        'timeout': 120,
    },
}
```

`OPENSEARCH_DSL` is then passed
to [`opensearchpy.connection.connections.configure`](http://elasticsearch-dsl.readthedocs.io/en/stable/configuration.html#multiple-clusters)
.

## Create Document Classes

To index instances of the following model :

```python
# models.py

class Car(models.Model):
    name = models.CharField()
    color = models.CharField()
    description = models.TextField()
    type = models.IntegerField(choices=[
        (1, "Sedan"),
        (2, "Truck"),
        (4, "SUV"),
    ])
```

First create a subclass of [`django_opensearch_dsl.Document`](document.md) containing the subclasses `Index`
(which define the index' settings) and `Django` (which contains settings related to your django `Model`). Finally,
register the class using `registry.register_document()` decorator.

It is required to define `Document` classes inside a file named `documents.py` in your apps' directory.

```python
# documents.py

from django_opensearch_dsl import Document
from django_opensearch_dsl.registries import registry
from .models import Car


@registry.register_document
class CarDocument(Document):
    class Index:
        name = 'cars'  # Name of the Opensearch index
        settings = {  # See Opensearch Indices API reference for available settings
            'number_of_shards': 1,
            'number_of_replicas': 0
        }
        # Configure how the index should be refreshed after an update.
        # See Opensearch documentation for supported options.
        # This per-Document setting overrides settings.OPENSEARCH_DSL_AUTO_REFRESH.
        auto_refresh = False

    class Django:
        model = Car  # The model associated with this Document        
        fields = [  # The fields of the model you want to be indexed in Opensearch
            'name',
            'color',
            'description',
            'type',
        ]
        # Paginate the django queryset used to populate the index with the specified size
        # This per-Document setting overrides settings.OPENSEARCH_DSL_QUERYSET_PAGINATION.
        queryset_pagination = 5000
```

# Changelog

### 0.6.2 (2024-04-23)

* Fix `CelerySignalProcessor` previously using `RealTimeSignalProcessor`'s method due to wrong indentation ([#66](https://github.com/Codoc-os/django-opensearch-dsl/pull/66)),
  Contributed by [jlariza](https://github.com/jlariza).
* `models.PositiveBigIntegerField` is now automatically mapped to `LongField` ([#67](https://github.com/Codoc-os/django-opensearch-dsl/pull/67)), Contributed by [jlariza](https://github.com/jlariza).

### 0.6.1 (2024-04-13)

* Multiple fixes to `CelerySignalProcessor` ([#62](https://github.com/Codoc-os/django-opensearch-dsl/pull/63)),
  Contributed by [Jordan Hyatt](https://github.com/JordanHyatt) and [jlariza](https://github.com/jlariza).
  * Correctly use `.delay` when calling tasks.
  * Only initiate tasks when needed by checking beforehand if an instance is connected to a Document (directly or related)
  * The tasks will only be created on transaction commit.

## 0.6.0 (2024-03-22)

* Add `mananage.py opensearch index update` subcommand to update an existing index mappings ([#52](https://github.com/Codoc-os/django-opensearch-dsl/pull/52)).
* Add `CelerySignalProcessor` as an alternative to `RealTimeSignalProcessor` to process signals asynchronously using Celery
  ([#51](https://github.com/Codoc-os/django-opensearch-dsl/pull/51)).
* Add `registry.get_models()` and `registry.__contains__()` methods ([#48](https://github.com/Codoc-os/django-opensearch-dsl/pull/48), Contributed by [ghkdxofla - Taelim Hwang (Limy)](https://github.com/ghkdxofla)).
* When using the `opensearch` command, any error now displays the raw OpenSearch response ([#49](https://github.com/Codoc-os/django-opensearch-dsl/pull/49)).
* Autosync and related model features are now [properly documented](https://django-opensearch-dsl.readthedocs.io/en/latest/document/#autosync) ([#53](https://github.com/Codoc-os/django-opensearch-dsl/pull/53)).
* Update the test matrix to work with the latest supported version of Python, Django, and OpenSearch. Also, add `isort` and
  `bandit` to CI ([#50](https://github.com/Codoc-os/django-opensearch-dsl/pull/50)).

### 0.5.2 (2024-01-11)

* Add the missing parameter `field_value_to_ignore=None` to `django_opensearch_dsl.fields.ListField.get_value_from_instance`
  ([#47](https://github.com/Codoc-os/django-opensearch-dsl/pull/47),
  Contributed by [ghkdxofla - Taelim Hwang (Limy)](https://github.com/ghkdxofla)).

### 0.5.1 (2023-05-18)

* Change references from `opensearch-dsl-py` to `opensearch-py`.  
  This follow the deprecation notice on the
  [`opensearch-dsl-py`](https://github.com/opensearch-project/opensearch-dsl-py) project. Its features are now directly
  included in `opensearch-py`.  
  ([#33](https://github.com/Codoc-os/django-opensearch-dsl/issues/33), Contributed by [Jacob Kausler](https://github.com/jakekausler)).

## 0.5.0 (2022-11-19)

* `get_indexing_queryset()` now order unordered QuerySet by their PK.
  ([#29](https://github.com/Codoc-os/django-opensearch-dsl/issues/29), Contributed by [Cédric Raud](https://github.com/cedricraud)).
* `keep_order` argument of `django_opensearch_dsl.search.Search.to_queryset` now default to `True`
  to be in line with the documentation ([#27](https://github.com/Codoc-os/django-opensearch-dsl/issues/27)).

### 0.4.1 (2022-08-16)

* `Document.update()` method now take an optional `using` argument allowing to specify an alternate
  OpenSearch connection defined in `OPENSEARCH_DSL`.
* Fix related document automatic indexation and deletion
  (Contributed by [Colin Seifer](https://github.com/Colin-Seifer)).
* Add `pre-delete` back into `BaseSignalProcessor.handle_m2m_changed()` to  properly update the
  index on M2M interactions (Contributed by [Colin Seifer](https://github.com/Colin-Seifer)).

## 0.4.0 (2022-08-04)

* Add support for related models. See [Document Classes](document.md#django-subclass) and
  [Document Field Reference](fields.md#using-prepare_field_with_related) for more information
  (Contributed by [Colin Seifer](https://github.com/Colin-Seifer)).
* `django-opensearch-dsl` now only tests supported version of Python and Django (mainstream and LTS). 
  This choice is made to:
    * Speed up development.
    * Speed up tests.
    * Reduce actions on github.
    * Encourage people to update their stack to supported (thus safer) versions.
* Drop support for Python 3.6.
* Drop support for Django 2.1, 2.2, 3.1.
* Now supports Django 4.1.
* Now supports `opensearch-dsl>=2.0 <3.00`.

## 0.3.0 (2022-06-22)

* Fixes internal links in documentation.
* Remove the need to declare a `TESTING` boolean in `settings.py`.

## 0.2.0 (2022-01-13)

* Restore auto-sync feature (still undocumented - Contributed by [David Guillot](https://github.com/David-Guillot))
* Add support to Django 4.0 (Contributed by [David Guillot](https://github.com/David-Guillot))
* Remove some python2 leftovers (Contributed by [David Guillot](https://github.com/David-Guillot))

## 0.1.2 (2021-12-14)

* Fixed 'Search.validate()'

## 0.1.0 (2021-12-11)

* Migrated to **Opensearch**
* Drop some feature such as auto-syncing signals and related models
* Replace `search_index` management command with `opensearch`.

## 0.1.0 (2021-12-11)

* Migrated to **Opensearch**
* Drop some feature such as auto-syncing signals and related models
* Replace `search_index` management command with `opensearch`.

## Before fork from `django-elasticsearch-dsl`

### 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.

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/qcoumes/django-opensearch-dsl",
    "name": "django-opensearch-dsl",
    "maintainer": null,
    "docs_url": null,
    "requires_python": null,
    "maintainer_email": null,
    "keywords": "django elasticsearch elasticsearch-dsl opensearch opensearch-dsl opensearch-py",
    "author": "Quentin Coumes (Codoc)",
    "author_email": "coumes.quentin@gmail.com",
    "download_url": "https://files.pythonhosted.org/packages/e8/99/8e751564a1c47e43356f3aac0a870a2820e58718257d4f37e34b2bfe38e1/django_opensearch_dsl-0.6.2.tar.gz",
    "platform": null,
    "description": "Django Opensearch DSL\n=====================\n\n[![PyPI Version](https://badge.fury.io/py/django-opensearch-dsl.svg)](https://badge.fury.io/py/django-opensearch-dsl)\n[![Documentation Status](https://readthedocs.org/projects/django-opensearch-dsl/badge/?version=latest)](https://django-opensearch-dsl.readthedocs.io/en/latest/?badge=latest)\n![Tests](https://github.com/Codoc-os/django-opensearch-dsl/workflows/Tests/badge.svg)\n[![Python 3.9+](https://img.shields.io/badge/Python-3.9+-brightgreen.svg)](#)\n[![Django 3.2+](https://img.shields.io/badge/Django-3.2+-brightgreen.svg)](#)\n[![OpenSearch 1.3+, 2.7+](https://img.shields.io/badge/OpenSearch-1.3+-brightgreen.svg)](#)\n[![License Apache 2](https://img.shields.io/badge/license-Apache%202-brightgreen.svg)](https://github.com/Codoc-os/django-opensearch-dsl/blob/master/LICENSE)\n[![codecov](https://codecov.io/gh/Codoc-os/django-opensearch-dsl/branch/master/graph/badge.svg)](https://codecov.io/gh/Codoc-os/django-opensearch-dsl)\n[![CodeFactor](https://www.codefactor.io/repository/github/Codoc-os/django-opensearch-dsl/badge)](https://www.codefactor.io/repository/github/Codoc-os/django-opensearch-dsl)\n\n**Django Opensearch DSL** is a package that allows the indexing of Django models in opensearch. It is built as a thin\nwrapper around [`opensearch-py`](https://github.com/opensearch-project/opensearch-py)\nso you can use all the features developed by the `opensearch-py` team.\n\nYou can view the full documentation\nat [https://django-opensearch-dsl.readthedocs.io](https://django-opensearch-dsl.readthedocs.io/en/latest/).\n\n## Features\n\n- Based on [`opensearch-py`](https://github.com/opensearch-project/opensearch-py) so you can make queries with\n  the [`Search`](https://elasticsearch-dsl.readthedocs.io/en/latest/search_dsl.html#the-search-object)\n  object.\n- Management commands for creating, deleting, and populating indices and documents.\n- Opensearch auto mapping from Django models fields.\n- Complex field type support (`ObjectField`, `NestedField`).\n- Index fast using `parallel` indexing.\n\n## Requirements\n\n`django-opensearch-dsl` only support the supported version of each dependency (mainstream & lts).\n\n* `Python` ([supported versions](https://devguide.python.org/versions/))\n* `Django` ([supported versions](https://www.djangoproject.com/download/#supported-versions))\n* `opensearch-py` ([compatibility matrix](https://github.com/opensearch-project/opensearch-py/blob/main/COMPATIBILITY.md))\n\n## Installation and Configuration\n\nThe easiest way to install `django-opensearch-dsl` is through `pip`:\n\n* `pip install django-opensearch-dsl`\n\nThen add `django_opensearch_dsl` to your `INSTALLED_APPS` settings.\n\nYou must then define `OPENSEARCH_DSL` in your Django settings.\n\nFor example:\n\n```python\nOPENSEARCH_DSL = {\n    'default': {\n        'hosts': 'localhost:9200'\n    },\n    'secure': {\n        'hosts': [{\"scheme\": \"https\", \"host\": \"192.30.255.112\", \"port\": 9201}],\n        'http_auth': (\"admin\", \"password\"),\n        'timeout': 120,\n    },\n}\n```\n\n`OPENSEARCH_DSL` is then passed\nto [`opensearchpy.connection.connections.configure`](http://elasticsearch-dsl.readthedocs.io/en/stable/configuration.html#multiple-clusters)\n.\n\n## Create Document Classes\n\nTo index instances of the following model :\n\n```python\n# models.py\n\nclass Car(models.Model):\n    name = models.CharField()\n    color = models.CharField()\n    description = models.TextField()\n    type = models.IntegerField(choices=[\n        (1, \"Sedan\"),\n        (2, \"Truck\"),\n        (4, \"SUV\"),\n    ])\n```\n\nFirst create a subclass of [`django_opensearch_dsl.Document`](document.md) containing the subclasses `Index`\n(which define the index' settings) and `Django` (which contains settings related to your django `Model`). Finally,\nregister the class using `registry.register_document()` decorator.\n\nIt is required to define `Document` classes inside a file named `documents.py` in your apps' directory.\n\n```python\n# documents.py\n\nfrom django_opensearch_dsl import Document\nfrom django_opensearch_dsl.registries import registry\nfrom .models import Car\n\n\n@registry.register_document\nclass CarDocument(Document):\n    class Index:\n        name = 'cars'  # Name of the Opensearch index\n        settings = {  # See Opensearch Indices API reference for available settings\n            'number_of_shards': 1,\n            'number_of_replicas': 0\n        }\n        # Configure how the index should be refreshed after an update.\n        # See Opensearch documentation for supported options.\n        # This per-Document setting overrides settings.OPENSEARCH_DSL_AUTO_REFRESH.\n        auto_refresh = False\n\n    class Django:\n        model = Car  # The model associated with this Document        \n        fields = [  # The fields of the model you want to be indexed in Opensearch\n            'name',\n            'color',\n            'description',\n            'type',\n        ]\n        # Paginate the django queryset used to populate the index with the specified size\n        # This per-Document setting overrides settings.OPENSEARCH_DSL_QUERYSET_PAGINATION.\n        queryset_pagination = 5000\n```\n\n# Changelog\n\n### 0.6.2 (2024-04-23)\n\n* Fix `CelerySignalProcessor` previously using `RealTimeSignalProcessor`'s method due to wrong indentation ([#66](https://github.com/Codoc-os/django-opensearch-dsl/pull/66)),\n  Contributed by [jlariza](https://github.com/jlariza).\n* `models.PositiveBigIntegerField` is now automatically mapped to `LongField` ([#67](https://github.com/Codoc-os/django-opensearch-dsl/pull/67)), Contributed by [jlariza](https://github.com/jlariza).\n\n### 0.6.1 (2024-04-13)\n\n* Multiple fixes to `CelerySignalProcessor` ([#62](https://github.com/Codoc-os/django-opensearch-dsl/pull/63)),\n  Contributed by [Jordan Hyatt](https://github.com/JordanHyatt) and [jlariza](https://github.com/jlariza).\n  * Correctly use `.delay` when calling tasks.\n  * Only initiate tasks when needed by checking beforehand if an instance is connected to a Document (directly or related)\n  * The tasks will only be created on transaction commit.\n\n## 0.6.0 (2024-03-22)\n\n* Add `mananage.py opensearch index update` subcommand to update an existing index mappings ([#52](https://github.com/Codoc-os/django-opensearch-dsl/pull/52)).\n* Add `CelerySignalProcessor` as an alternative to `RealTimeSignalProcessor` to process signals asynchronously using Celery\n  ([#51](https://github.com/Codoc-os/django-opensearch-dsl/pull/51)).\n* Add `registry.get_models()` and `registry.__contains__()` methods ([#48](https://github.com/Codoc-os/django-opensearch-dsl/pull/48), Contributed by [ghkdxofla - Taelim Hwang (Limy)](https://github.com/ghkdxofla)).\n* When using the `opensearch` command, any error now displays the raw OpenSearch response ([#49](https://github.com/Codoc-os/django-opensearch-dsl/pull/49)).\n* Autosync and related model features are now [properly documented](https://django-opensearch-dsl.readthedocs.io/en/latest/document/#autosync) ([#53](https://github.com/Codoc-os/django-opensearch-dsl/pull/53)).\n* Update the test matrix to work with the latest supported version of Python, Django, and OpenSearch. Also, add `isort` and\n  `bandit` to CI ([#50](https://github.com/Codoc-os/django-opensearch-dsl/pull/50)).\n\n### 0.5.2 (2024-01-11)\n\n* Add the missing parameter `field_value_to_ignore=None` to `django_opensearch_dsl.fields.ListField.get_value_from_instance`\n  ([#47](https://github.com/Codoc-os/django-opensearch-dsl/pull/47),\n  Contributed by [ghkdxofla - Taelim Hwang (Limy)](https://github.com/ghkdxofla)).\n\n### 0.5.1 (2023-05-18)\n\n* Change references from `opensearch-dsl-py` to `opensearch-py`.  \n  This follow the deprecation notice on the\n  [`opensearch-dsl-py`](https://github.com/opensearch-project/opensearch-dsl-py) project. Its features are now directly\n  included in `opensearch-py`.  \n  ([#33](https://github.com/Codoc-os/django-opensearch-dsl/issues/33), Contributed by [Jacob Kausler](https://github.com/jakekausler)).\n\n## 0.5.0 (2022-11-19)\n\n* `get_indexing_queryset()` now order unordered QuerySet by their PK.\n  ([#29](https://github.com/Codoc-os/django-opensearch-dsl/issues/29), Contributed by [C\u00e9dric Raud](https://github.com/cedricraud)).\n* `keep_order` argument of `django_opensearch_dsl.search.Search.to_queryset` now default to `True`\n  to be in line with the documentation ([#27](https://github.com/Codoc-os/django-opensearch-dsl/issues/27)).\n\n### 0.4.1 (2022-08-16)\n\n* `Document.update()` method now take an optional `using` argument allowing to specify an alternate\n  OpenSearch connection defined in `OPENSEARCH_DSL`.\n* Fix related document automatic indexation and deletion\n  (Contributed by [Colin Seifer](https://github.com/Colin-Seifer)).\n* Add `pre-delete` back into `BaseSignalProcessor.handle_m2m_changed()` to  properly update the\n  index on M2M interactions (Contributed by [Colin Seifer](https://github.com/Colin-Seifer)).\n\n## 0.4.0 (2022-08-04)\n\n* Add support for related models. See [Document Classes](document.md#django-subclass) and\n  [Document Field Reference](fields.md#using-prepare_field_with_related) for more information\n  (Contributed by [Colin Seifer](https://github.com/Colin-Seifer)).\n* `django-opensearch-dsl` now only tests supported version of Python and Django (mainstream and LTS). \n  This choice is made to:\n    * Speed up development.\n    * Speed up tests.\n    * Reduce actions on github.\n    * Encourage people to update their stack to supported (thus safer) versions.\n* Drop support for Python 3.6.\n* Drop support for Django 2.1, 2.2, 3.1.\n* Now supports Django 4.1.\n* Now supports `opensearch-dsl>=2.0 <3.00`.\n\n## 0.3.0 (2022-06-22)\n\n* Fixes internal links in documentation.\n* Remove the need to declare a `TESTING` boolean in `settings.py`.\n\n## 0.2.0 (2022-01-13)\n\n* Restore auto-sync feature (still undocumented - Contributed by [David Guillot](https://github.com/David-Guillot))\n* Add support to Django 4.0 (Contributed by [David Guillot](https://github.com/David-Guillot))\n* Remove some python2 leftovers (Contributed by [David Guillot](https://github.com/David-Guillot))\n\n## 0.1.2 (2021-12-14)\n\n* Fixed 'Search.validate()'\n\n## 0.1.0 (2021-12-11)\n\n* Migrated to **Opensearch**\n* Drop some feature such as auto-syncing signals and related models\n* Replace `search_index` management command with `opensearch`.\n\n## 0.1.0 (2021-12-11)\n\n* Migrated to **Opensearch**\n* Drop some feature such as auto-syncing signals and related models\n* Replace `search_index` management command with `opensearch`.\n\n## Before fork from `django-elasticsearch-dsl`\n\n### 7.1.4 (2020-07-05)\n\n* Configure Elasticsearch _id dynamically from document (#272)\n* Use chain.from_iterable in for performance improvement (#278)\n* Handle case where SimpleLazyObject being treated as an Iterable (#255)\n* Camelcase default value in management command (#254)\n* Various updates and fixup in docs (#250, #276)\n* Start testing against Python 3.8 (#266)\n\n### 7.1.1 (2019-12-26)\n\n* Adding detailed documentation and published to Read The Docs #222\n* Resolve name resolution while delete, create index (#228)\n* Added support for Django 3.0. (#230)\n* Removing old Elasticsearc compatibility (#219)\n* Drop StringField in favor of TextField.\n\n### 7.1.0 (2019-10-29)\n\n* Support for Django `DecimalField` #141\n* Indexing speedup by using `parallel` indexing. #213. Now you can pass `--parallel` or set `ELASTICSEARCH_DSL_PARALLEL`\n  in your settings to get indexing speed boost while indexing through management command.\n* Fixing name resolution in management command #206\n* Small documentation fixes. #196\n\n### 7.0.0 (2019-08-11)\n\n* Support Elasticsearch 7.0 (See PR #176)\n* Added order by to paginate queryset properly (See PR #153)\n* Remove `standard` token filter from `README.md` and test files\n* Various documentation fixes\n\n### 6.4.2 (2019-07-26)\n\n* Fix document importing path\n* Update readme\n\n### 6.4.1 (2019-06-14)\n\n* The `DocType` import has changed to `Document`\n\n### 6.4.0 (2019-06-01)\n\n* Support elasticsearch-dsl>6.3.0\n* Class `Meta` has changed to class `Django` (See PR #136)\n* Add `register_document` decorator to register a document (See PR #136)\n* Additional Bug fixing and others\n\n### 0.5.1 (2018-11-07)\n\n* Limit elastsearch-dsl to supported versions\n\n### 0.5.0 (2018-04-22)\n\n* Add Support for Elasticsearch 6 thanks to HansAdema\n\n### Breaking Change:\n\n* Django string fields now point to ES text field by default.\n* 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\n  documents.\n\n### 0.4.5 (2018-04-22)\n\n* Fix prepare with related models when deleted (See PR #99)\n* Fix unwanted calls to get_instances_from_related\n* Fix for empty ArrayField (CBinyenya)\n* Fix nested OneToOneField when related object doesn't exist (CBinyenya)\n* Update elasticsearch-dsl minimal version\n\n### 0.4.4 (2017-12-13)\n\n* Fix to_queryset with es 5.0/5.1\n\n### 0.4.3 (2017-12-12)\n\n* Fix syncing of related objects when deleted\n* Add django 2.0 support\n\n### 0.4.2 (2017-11-27)\n\n* Convert lazy string to string before serialization\n* Readme update (arielpontes)\n\n### 0.4.1 (2017-10-17)\n\n* Update example app with get_instances_from_related\n* Typo/grammar fixes\n\n### 0.4.0 (2017-10-07)\n\n* Add a method on the Search class to return a django queryset from an es result\n* Add a queryset_pagination option to DocType.Meta for allow the pagination of big django querysets during the index\n  populating\n* Remove the call to iterator method for the django queryset\n* Fix DocType inheritance. The DocType is store in the registry as a class and not anymore as an instance\n\n### 0.3.0 (2017-10-01)\n\n* Add support for resynching ES documents if related models are updated (HansAdema)\n* Better management for django FileField and ImageField\n* Fix some errors in the doc (barseghyanartur, diwu1989)\n\n### 0.2.0 (2017-07-02)\n\n* Replace simple model signals with easier to customise signal processors (barseghyanartur)\n* Add options to disable automatic index refreshes (HansAdema)\n* Support defining DocType indexes through Meta class (HansAdema)\n* Add option to set default Index settings through Django config (HansAdema)\n\n### 0.1.0 (2017-05-26)\n\n* First release on PyPI.\n",
    "bugtrack_url": null,
    "license": "Apache Software License 2.0",
    "summary": "Wrapper around opensearch-py for django models",
    "version": "0.6.2",
    "project_urls": {
        "Homepage": "https://github.com/qcoumes/django-opensearch-dsl"
    },
    "split_keywords": [
        "django",
        "elasticsearch",
        "elasticsearch-dsl",
        "opensearch",
        "opensearch-dsl",
        "opensearch-py"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "e8998e751564a1c47e43356f3aac0a870a2820e58718257d4f37e34b2bfe38e1",
                "md5": "c0dfc45629fe318ad1334958fcde4f82",
                "sha256": "f7404dba8a4e2cfede2168423f8f9d32658fef6b18714e59139a4b1b341b886b"
            },
            "downloads": -1,
            "filename": "django_opensearch_dsl-0.6.2.tar.gz",
            "has_sig": false,
            "md5_digest": "c0dfc45629fe318ad1334958fcde4f82",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": null,
            "size": 29026,
            "upload_time": "2024-04-23T21:42:36",
            "upload_time_iso_8601": "2024-04-23T21:42:36.863533Z",
            "url": "https://files.pythonhosted.org/packages/e8/99/8e751564a1c47e43356f3aac0a870a2820e58718257d4f37e34b2bfe38e1/django_opensearch_dsl-0.6.2.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-04-23 21:42:36",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "qcoumes",
    "github_project": "django-opensearch-dsl",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "requirements": [
        {
            "name": "django",
            "specs": [
                [
                    ">=",
                    "2.1"
                ]
            ]
        },
        {
            "name": "opensearch-py",
            "specs": [
                [
                    ">=",
                    "2.2.0"
                ]
            ]
        },
        {
            "name": "python-dateutil",
            "specs": [
                [
                    "~=",
                    "2.8.2"
                ]
            ]
        }
    ],
    "lcname": "django-opensearch-dsl"
}
        
Elapsed time: 1.22547s