django-elasticsearch-dsl-drf


Namedjango-elasticsearch-dsl-drf JSON
Version 0.22.5 PyPI version JSON
download
home_pagehttps://github.com/barseghyanartur/django-elasticsearch-dsl-drf/
SummaryIntegrate Elasticsearch DSL with Django REST framework.
upload_time2022-07-03 22:17:12
maintainer
docs_urlNone
authorArtur Barseghyan
requires_python>=2.7
licenseGPL-2.0-only OR LGPL-2.1-or-later
keywords django elasticsearch elasticsearch-dsl django rest framework
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage
            ============================
django-elasticsearch-dsl-drf
============================
Integrate `Elasticsearch DSL
<https://pypi.python.org/pypi/elasticsearch-dsl>`_ with
`Django REST framework <https://pypi.python.org/pypi/djangorestframework>`_ in
the shortest way possible, with least efforts possible.

Package provides views, serializers, filter backends, pagination and other
handy add-ons.

You are expected to use `django-elasticsearch-dsl
<https://pypi.python.org/pypi/django-elasticsearch-dsl>`_ for defining your
Elasticsearch documents.

.. image:: https://img.shields.io/pypi/v/django-elasticsearch-dsl-drf.svg
   :target: https://pypi.python.org/pypi/django-elasticsearch-dsl-drf
   :alt: PyPI Version

.. image:: https://img.shields.io/pypi/pyversions/django-elasticsearch-dsl-drf.svg
    :target: https://pypi.python.org/pypi/django-elasticsearch-dsl-drf/
    :alt: Supported Python versions

.. image:: https://github.com/barseghyanartur/django-elasticsearch-dsl-drf/workflows/test/badge.svg
   :target: https://github.com/barseghyanartur/django-elasticsearch-dsl-drf/actions
   :alt: Build Status

.. image:: https://readthedocs.org/projects/django-elasticsearch-dsl-drf/badge/?version=latest
    :target: http://django-elasticsearch-dsl-drf.readthedocs.io/en/latest/?badge=latest
    :alt: Documentation Status

.. image:: https://img.shields.io/badge/license-GPL--2.0--only%20OR%20LGPL--2.1--or--later-blue.svg
   :target: https://github.com/barseghyanartur/django-elasticsearch-dsl-drf/#License
   :alt: GPL-2.0-only OR LGPL-2.1-or-later

.. image:: https://coveralls.io/repos/github/barseghyanartur/django-elasticsearch-dsl-drf/badge.svg?branch=master
    :target: https://coveralls.io/github/barseghyanartur/django-elasticsearch-dsl-drf?branch=master
    :alt: Coverage

Documentation
=============
Documentation is available on `Read the Docs
<http://django-elasticsearch-dsl-drf.readthedocs.io/>`_.

Make sure to read `FAQ <https://github.com/barseghyanartur/django-elasticsearch-dsl-drf/blob/master/docs/faq.rst>`_.

Prerequisites
=============
- Django 2.2, 3.1 and 3.2.
- Python 3.6, 3.7, 3.8 and 3.9.
- Elasticsearch 6.x, 7.x. For older versions use
  ``django-elasticsearch-dsl-drf`` version 0.18.

Main features and highlights
============================

- `Dynamic serializer for Documents <http://django-elasticsearch-dsl-drf.readthedocs.io/en/0.22.5/basic_usage_examples.html#sample-serializer>`_.
- `Search filter backend <http://django-elasticsearch-dsl-drf.readthedocs.io/en/0.22.5/advanced_usage_examples.html#search>`_.
- `Ordering filter backend <http://django-elasticsearch-dsl-drf.readthedocs.io/en/0.22.5/advanced_usage_examples.html#ordering>`_.
- `Filtering filter backend <http://django-elasticsearch-dsl-drf.readthedocs.io/en/0.22.5/advanced_usage_examples.html#filtering>`_ (big variety of
  native- and functional- query lookups, such as ``gt``, ``gte``, ``lt``,
  ``lte``, ``endswith``, ``contains``, ``wildcard``, ``exists``, ``exclude``,
  ``isnull``, ``range``, ``in``, ``prefix`` (same as ``startswith``), ``term``
  and ``terms`` is implemented.
- `Geo-spatial filtering filter backend <http://django-elasticsearch-dsl-drf.readthedocs.io/en/0.22.5/advanced_usage_examples.html#geo-spatial-features>`_ (the
  following filters implemented: ``geo_distance``, ``geo_polygon`` and
  ``geo_bounding_box``).
- `Geo-spatial ordering filter backend <http://django-elasticsearch-dsl-drf.readthedocs.io/en/0.22.5/advanced_usage_examples.html#geo-spatial-features>`_ (the
  following filters implemented: ``geo_distance``).
- `Faceted search filter backend <http://django-elasticsearch-dsl-drf.readthedocs.io/en/0.22.5/advanced_usage_examples.html#faceted-search>`_.
- `Post-filter filter backend <http://django-elasticsearch-dsl-drf.readthedocs.io/en/0.22.5/advanced_usage_examples.html#post-filter>`_.
- `Nested filtering filter backend <http://django-elasticsearch-dsl-drf.readthedocs.io/en/0.22.5/nested_fields_usage_examples.html#nested-filtering>`_.
- `Highlight backend <http://django-elasticsearch-dsl-drf.readthedocs.io/en/0.22.5/advanced_usage_examples.html#highlighting>`_.
- `Suggester filter backend <http://django-elasticsearch-dsl-drf.readthedocs.io/en/0.22.5/advanced_usage_examples.html#suggestions>`_.
- `Functional suggester filter backend <http://django-elasticsearch-dsl-drf.readthedocs.io/en/0.22.5/advanced_usage_examples.html#functional-suggestions>`_.
- `Pagination (Page number and limit/offset pagination) <http://django-elasticsearch-dsl-drf.readthedocs.io/en/0.22.5/advanced_usage_examples.html#pagination>`_.
- `Ids filter backend <http://django-elasticsearch-dsl-drf.readthedocs.io/en/0.22.5/advanced_usage_examples.html#ids-filter>`_.
- `Multi match search filter backend <http://django-elasticsearch-dsl-drf.readthedocs.io/en/0.22.5/search_backends.html#multi-match-search-filter-backend>`_.
- `Simple search query filter backend <http://django-elasticsearch-dsl-drf.readthedocs.io/en/0.22.5/search_backends.html#simple-query-string-filter-backend>`_.
- `More-like-this support (detail action) <http://django-elasticsearch-dsl-drf.readthedocs.io/en/0.22.5/more_like_this.html>`_.
- `Global aggregations support <http://django-elasticsearch-dsl-drf.readthedocs.io/en/0.22.5/global_aggregations.html>`_.
- `Source filter backend <http://django-elasticsearch-dsl-drf.readthedocs.io/en/0.22.5/source_backend.html>`_.

Do you need a similar tool for GraphQL? Check `graphene-elastic
<https://github.com/barseghyanartur/graphene-elastic>`__.

Demos
=====
Online demo
-----------
Check the `live demo app <https://django-elasticsearch-dsl-drf.herokuapp.com>`__
(Django 3.1 + Django REST Framework 3.12 + Elasticsearch 7.5) hosted on Heroku
and bonsai.io.

Local demo
----------
A frontend demo (React based) is available. See the `dedicated docs
<https://github.com/barseghyanartur/django-elasticsearch-dsl-drf/blob/master/examples/frontend/README.rst>`_
for more information.

To bootstrap evaluation, clone the repository locally and run `docker-compose`.

.. code-block:: sh

    docker-compose up

It will set up:

- Elasticsearch on `http://localhost:9200 <http://localhost:9200>`_
- Django REST framework on `http://localhost:8000 <http://localhost:8000>`_
- React on `http://localhost:3000 <http://localhost:3000>`_

Installation
============
(1) Install latest stable version from PyPI:

    .. code-block:: sh

        pip install django-elasticsearch-dsl-drf

    or latest stable version from GitHub:

    .. code-block:: sh

        pip install https://github.com/barseghyanartur/django-elasticsearch-dsl-drf/archive/stable.tar.gz

(2) Add ``rest_framework``, ``django_elasticsearch_dsl`` and
    ``django_elasticsearch_dsl_drf`` to ``INSTALLED_APPS``:

    .. code-block:: python

        INSTALLED_APPS = (
            # ...
            # REST framework
            'rest_framework',

            # Django Elasticsearch integration
            'django_elasticsearch_dsl',

            # Django REST framework Elasticsearch integration (this package)
            'django_elasticsearch_dsl_drf',
            # ...
        )

Quick start
===========
Perhaps the easiest way to get acquainted with ``django-elasticsearch-dsl-drf``
is to read the `quick start tutorial <http://django-elasticsearch-dsl-drf.readthedocs.io/en/0.22.5/quick_start.html>`_.

See it as a guide of diving into integration of Elasticsearch with Django
with very low knowledge entry level.

Testing
=======
Project is covered with tests.

To test with all supported Python/Django versions type:

.. code-block:: sh

    tox

To test against specific environment, type:

.. code-block:: sh

    tox -e py38-django30

To test just your working environment type:

.. code-block:: sh

    ./runtests.py

To run a single test in your working environment type:

.. code-block:: sh

    ./runtests.py src/django_elasticsearch_dsl_drf/tests/test_filtering.py

Or:

.. code-block:: sh

    ./manage.py test django_elasticsearch_dsl_drf.tests.test_ordering

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

.. code-block:: sh

    ./runtests.py src/django_elasticsearch_dsl_drf/tests/test_suggesters.py::TestSuggesters

It's assumed that you have all the requirements installed. If not, first
install the test requirements:

.. code-block:: sh

    pip install -r examples/requirements/test.txt

Writing documentation
=====================
Keep the following hierarchy.

.. code-block:: text

    =====
    title
    =====

    header
    ======

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

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

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

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

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

License
=======
GPL-2.0-only OR LGPL-2.1-or-later

Support
=======
For any issues contact me at the e-mail given in the `Author`_ section.

Author
======
Artur Barseghyan <artur.barseghyan@gmail.com>

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/barseghyanartur/django-elasticsearch-dsl-drf/",
    "name": "django-elasticsearch-dsl-drf",
    "maintainer": "",
    "docs_url": null,
    "requires_python": ">=2.7",
    "maintainer_email": "",
    "keywords": "django,elasticsearch,elasticsearch-dsl,django rest framework",
    "author": "Artur Barseghyan",
    "author_email": "artur.barseghyan@gmail.com",
    "download_url": "https://files.pythonhosted.org/packages/0a/b1/5a6366036349d384ae7fa1a9cd589b921419213ae504f7924c3363a7b239/django-elasticsearch-dsl-drf-0.22.5.tar.gz",
    "platform": null,
    "description": "============================\ndjango-elasticsearch-dsl-drf\n============================\nIntegrate `Elasticsearch DSL\n<https://pypi.python.org/pypi/elasticsearch-dsl>`_ with\n`Django REST framework <https://pypi.python.org/pypi/djangorestframework>`_ in\nthe shortest way possible, with least efforts possible.\n\nPackage provides views, serializers, filter backends, pagination and other\nhandy add-ons.\n\nYou are expected to use `django-elasticsearch-dsl\n<https://pypi.python.org/pypi/django-elasticsearch-dsl>`_ for defining your\nElasticsearch documents.\n\n.. image:: https://img.shields.io/pypi/v/django-elasticsearch-dsl-drf.svg\n   :target: https://pypi.python.org/pypi/django-elasticsearch-dsl-drf\n   :alt: PyPI Version\n\n.. image:: https://img.shields.io/pypi/pyversions/django-elasticsearch-dsl-drf.svg\n    :target: https://pypi.python.org/pypi/django-elasticsearch-dsl-drf/\n    :alt: Supported Python versions\n\n.. image:: https://github.com/barseghyanartur/django-elasticsearch-dsl-drf/workflows/test/badge.svg\n   :target: https://github.com/barseghyanartur/django-elasticsearch-dsl-drf/actions\n   :alt: Build Status\n\n.. image:: https://readthedocs.org/projects/django-elasticsearch-dsl-drf/badge/?version=latest\n    :target: http://django-elasticsearch-dsl-drf.readthedocs.io/en/latest/?badge=latest\n    :alt: Documentation Status\n\n.. image:: https://img.shields.io/badge/license-GPL--2.0--only%20OR%20LGPL--2.1--or--later-blue.svg\n   :target: https://github.com/barseghyanartur/django-elasticsearch-dsl-drf/#License\n   :alt: GPL-2.0-only OR LGPL-2.1-or-later\n\n.. image:: https://coveralls.io/repos/github/barseghyanartur/django-elasticsearch-dsl-drf/badge.svg?branch=master\n    :target: https://coveralls.io/github/barseghyanartur/django-elasticsearch-dsl-drf?branch=master\n    :alt: Coverage\n\nDocumentation\n=============\nDocumentation is available on `Read the Docs\n<http://django-elasticsearch-dsl-drf.readthedocs.io/>`_.\n\nMake sure to read `FAQ <https://github.com/barseghyanartur/django-elasticsearch-dsl-drf/blob/master/docs/faq.rst>`_.\n\nPrerequisites\n=============\n- Django 2.2, 3.1 and 3.2.\n- Python 3.6, 3.7, 3.8 and 3.9.\n- Elasticsearch 6.x, 7.x. For older versions use\n  ``django-elasticsearch-dsl-drf`` version 0.18.\n\nMain features and highlights\n============================\n\n- `Dynamic serializer for Documents <http://django-elasticsearch-dsl-drf.readthedocs.io/en/0.22.5/basic_usage_examples.html#sample-serializer>`_.\n- `Search filter backend <http://django-elasticsearch-dsl-drf.readthedocs.io/en/0.22.5/advanced_usage_examples.html#search>`_.\n- `Ordering filter backend <http://django-elasticsearch-dsl-drf.readthedocs.io/en/0.22.5/advanced_usage_examples.html#ordering>`_.\n- `Filtering filter backend <http://django-elasticsearch-dsl-drf.readthedocs.io/en/0.22.5/advanced_usage_examples.html#filtering>`_ (big variety of\n  native- and functional- query lookups, such as ``gt``, ``gte``, ``lt``,\n  ``lte``, ``endswith``, ``contains``, ``wildcard``, ``exists``, ``exclude``,\n  ``isnull``, ``range``, ``in``, ``prefix`` (same as ``startswith``), ``term``\n  and ``terms`` is implemented.\n- `Geo-spatial filtering filter backend <http://django-elasticsearch-dsl-drf.readthedocs.io/en/0.22.5/advanced_usage_examples.html#geo-spatial-features>`_ (the\n  following filters implemented: ``geo_distance``, ``geo_polygon`` and\n  ``geo_bounding_box``).\n- `Geo-spatial ordering filter backend <http://django-elasticsearch-dsl-drf.readthedocs.io/en/0.22.5/advanced_usage_examples.html#geo-spatial-features>`_ (the\n  following filters implemented: ``geo_distance``).\n- `Faceted search filter backend <http://django-elasticsearch-dsl-drf.readthedocs.io/en/0.22.5/advanced_usage_examples.html#faceted-search>`_.\n- `Post-filter filter backend <http://django-elasticsearch-dsl-drf.readthedocs.io/en/0.22.5/advanced_usage_examples.html#post-filter>`_.\n- `Nested filtering filter backend <http://django-elasticsearch-dsl-drf.readthedocs.io/en/0.22.5/nested_fields_usage_examples.html#nested-filtering>`_.\n- `Highlight backend <http://django-elasticsearch-dsl-drf.readthedocs.io/en/0.22.5/advanced_usage_examples.html#highlighting>`_.\n- `Suggester filter backend <http://django-elasticsearch-dsl-drf.readthedocs.io/en/0.22.5/advanced_usage_examples.html#suggestions>`_.\n- `Functional suggester filter backend <http://django-elasticsearch-dsl-drf.readthedocs.io/en/0.22.5/advanced_usage_examples.html#functional-suggestions>`_.\n- `Pagination (Page number and limit/offset pagination) <http://django-elasticsearch-dsl-drf.readthedocs.io/en/0.22.5/advanced_usage_examples.html#pagination>`_.\n- `Ids filter backend <http://django-elasticsearch-dsl-drf.readthedocs.io/en/0.22.5/advanced_usage_examples.html#ids-filter>`_.\n- `Multi match search filter backend <http://django-elasticsearch-dsl-drf.readthedocs.io/en/0.22.5/search_backends.html#multi-match-search-filter-backend>`_.\n- `Simple search query filter backend <http://django-elasticsearch-dsl-drf.readthedocs.io/en/0.22.5/search_backends.html#simple-query-string-filter-backend>`_.\n- `More-like-this support (detail action) <http://django-elasticsearch-dsl-drf.readthedocs.io/en/0.22.5/more_like_this.html>`_.\n- `Global aggregations support <http://django-elasticsearch-dsl-drf.readthedocs.io/en/0.22.5/global_aggregations.html>`_.\n- `Source filter backend <http://django-elasticsearch-dsl-drf.readthedocs.io/en/0.22.5/source_backend.html>`_.\n\nDo you need a similar tool for GraphQL? Check `graphene-elastic\n<https://github.com/barseghyanartur/graphene-elastic>`__.\n\nDemos\n=====\nOnline demo\n-----------\nCheck the `live demo app <https://django-elasticsearch-dsl-drf.herokuapp.com>`__\n(Django 3.1 + Django REST Framework 3.12 + Elasticsearch 7.5) hosted on Heroku\nand bonsai.io.\n\nLocal demo\n----------\nA frontend demo (React based) is available. See the `dedicated docs\n<https://github.com/barseghyanartur/django-elasticsearch-dsl-drf/blob/master/examples/frontend/README.rst>`_\nfor more information.\n\nTo bootstrap evaluation, clone the repository locally and run `docker-compose`.\n\n.. code-block:: sh\n\n    docker-compose up\n\nIt will set up:\n\n- Elasticsearch on `http://localhost:9200 <http://localhost:9200>`_\n- Django REST framework on `http://localhost:8000 <http://localhost:8000>`_\n- React on `http://localhost:3000 <http://localhost:3000>`_\n\nInstallation\n============\n(1) Install latest stable version from PyPI:\n\n    .. code-block:: sh\n\n        pip install django-elasticsearch-dsl-drf\n\n    or latest stable version from GitHub:\n\n    .. code-block:: sh\n\n        pip install https://github.com/barseghyanartur/django-elasticsearch-dsl-drf/archive/stable.tar.gz\n\n(2) Add ``rest_framework``, ``django_elasticsearch_dsl`` and\n    ``django_elasticsearch_dsl_drf`` to ``INSTALLED_APPS``:\n\n    .. code-block:: python\n\n        INSTALLED_APPS = (\n            # ...\n            # REST framework\n            'rest_framework',\n\n            # Django Elasticsearch integration\n            'django_elasticsearch_dsl',\n\n            # Django REST framework Elasticsearch integration (this package)\n            'django_elasticsearch_dsl_drf',\n            # ...\n        )\n\nQuick start\n===========\nPerhaps the easiest way to get acquainted with ``django-elasticsearch-dsl-drf``\nis to read the `quick start tutorial <http://django-elasticsearch-dsl-drf.readthedocs.io/en/0.22.5/quick_start.html>`_.\n\nSee it as a guide of diving into integration of Elasticsearch with Django\nwith very low knowledge entry level.\n\nTesting\n=======\nProject is covered with tests.\n\nTo test with all supported Python/Django versions type:\n\n.. code-block:: sh\n\n    tox\n\nTo test against specific environment, type:\n\n.. code-block:: sh\n\n    tox -e py38-django30\n\nTo test just your working environment type:\n\n.. code-block:: sh\n\n    ./runtests.py\n\nTo run a single test in your working environment type:\n\n.. code-block:: sh\n\n    ./runtests.py src/django_elasticsearch_dsl_drf/tests/test_filtering.py\n\nOr:\n\n.. code-block:: sh\n\n    ./manage.py test django_elasticsearch_dsl_drf.tests.test_ordering\n\nTo run a single test class in a given test module in your working environment\ntype:\n\n.. code-block:: sh\n\n    ./runtests.py src/django_elasticsearch_dsl_drf/tests/test_suggesters.py::TestSuggesters\n\nIt's assumed that you have all the requirements installed. If not, first\ninstall the test requirements:\n\n.. code-block:: sh\n\n    pip install -r examples/requirements/test.txt\n\nWriting documentation\n=====================\nKeep the following hierarchy.\n\n.. code-block:: text\n\n    =====\n    title\n    =====\n\n    header\n    ======\n\n    sub-header\n    ----------\n\n    sub-sub-header\n    ~~~~~~~~~~~~~~\n\n    sub-sub-sub-header\n    ^^^^^^^^^^^^^^^^^^\n\n    sub-sub-sub-sub-header\n    ++++++++++++++++++++++\n\n    sub-sub-sub-sub-sub-header\n    **************************\n\nLicense\n=======\nGPL-2.0-only OR LGPL-2.1-or-later\n\nSupport\n=======\nFor any issues contact me at the e-mail given in the `Author`_ section.\n\nAuthor\n======\nArtur Barseghyan <artur.barseghyan@gmail.com>\n",
    "bugtrack_url": null,
    "license": "GPL-2.0-only OR LGPL-2.1-or-later",
    "summary": "Integrate Elasticsearch DSL with Django REST framework.",
    "version": "0.22.5",
    "split_keywords": [
        "django",
        "elasticsearch",
        "elasticsearch-dsl",
        "django rest framework"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "md5": "a6b9a3b2f1db26ebf0eb41630ac9d182",
                "sha256": "fc0b3960e16f6c06de4f2ca4daf1134376fce4d496c1ddc218c23daddf6bcaa0"
            },
            "downloads": -1,
            "filename": "django_elasticsearch_dsl_drf-0.22.5-py2.py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "a6b9a3b2f1db26ebf0eb41630ac9d182",
            "packagetype": "bdist_wheel",
            "python_version": "py2.py3",
            "requires_python": ">=2.7",
            "size": 151890,
            "upload_time": "2022-07-03T22:17:09",
            "upload_time_iso_8601": "2022-07-03T22:17:09.717068Z",
            "url": "https://files.pythonhosted.org/packages/54/4d/4432adbe667791a621b0dc5421c9d32817f010b22e53656038f427eca5c0/django_elasticsearch_dsl_drf-0.22.5-py2.py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "md5": "a7a28b8938fb766ea8ace7f24a7b32eb",
                "sha256": "b444f168535ff99244cc995ec354a31abcbf3fc03bd7b11ec1a3f43c7208f63a"
            },
            "downloads": -1,
            "filename": "django-elasticsearch-dsl-drf-0.22.5.tar.gz",
            "has_sig": false,
            "md5_digest": "a7a28b8938fb766ea8ace7f24a7b32eb",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=2.7",
            "size": 99055,
            "upload_time": "2022-07-03T22:17:12",
            "upload_time_iso_8601": "2022-07-03T22:17:12.364750Z",
            "url": "https://files.pythonhosted.org/packages/0a/b1/5a6366036349d384ae7fa1a9cd589b921419213ae504f7924c3363a7b239/django-elasticsearch-dsl-drf-0.22.5.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2022-07-03 22:17:12",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "github_user": "barseghyanartur",
    "github_project": "django-elasticsearch-dsl-drf",
    "travis_ci": false,
    "coveralls": true,
    "github_actions": true,
    "requirements": [],
    "tox": true,
    "lcname": "django-elasticsearch-dsl-drf"
}
        
Elapsed time: 0.04544s