django-elasticsearch-dsl-drf

Integrate Elasticsearch DSL with Django REST framework 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 for defining your Elasticsearch documents.

Prerequisites

  • Django 1.8, 1.9, 1.10, 1.11, 2.0, 2.1 and 2.2.
  • Python 2.7, 3.5, 3.6, 3.7
  • Elasticsearch 2.x, 5.x, 6.x

Dependencies

elasticsearch and elasticsearch-dsl

Depending on your Elasticsearch version (either 2.x, 5.x or 6.x) you should use 2.x, 5.x or 6.x versions of the elasticsearch and elasticsearch-dsl packages accordingly.

django-elasticsearch-dsl

You are advised to use the latest version of django-elasticsearch-dsl.

djangorestframework

Initial version of this package was written for djangorestframework 3.6.2.

Tested with the following versions of Django/Django REST Framework:

Django Django REST Framework
1.8 3.6.2
1.9 3.6.2
1.10 3.6.2
1.11 3.7.7
2.0 3.7.7
2.1 3.8.2
2.2 3.9.2

Demo

A frontend demo (React based) is available. See the dedicated docs for more information.

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

docker-compose up

It will set up:

Documentation

Documentation is available on Read the Docs.

Installation

  1. Install latest stable version from PyPI:

    pip install django-elasticsearch-dsl-drf
    

    or latest stable version from GitHub:

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

    or latest stable version from BitBucket:

    pip install https://bitbucket.org/barseghyanartur/django-elasticsearch-dsl-drf/get/stable.tar.gz
    
  2. Add rest_framework, django_elasticsearch_dsl and django_elasticsearch_dsl_drf to INSTALLED_APPS:

    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.

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:

tox

To test against specific environment, type:

tox -e py37-django21

To test just your working environment type:

./runtests.py

To run a single test in your working environment type:

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

Or:

./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:

./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:

pip install -r examples/requirements/test.txt

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

GPL 2.0/LGPL 2.1

Support

For any issues contact me at the e-mail given in the Author section.

Project documentation

Contents: