• Stars
    star
    352
  • Rank 120,622 (Top 3 %)
  • Language
    Python
  • Created over 7 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Integrate Elasticsearch DSL with Django REST framework.

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.

PyPI Version Supported Python versions Build Status Documentation Status GPL-2.0-only OR LGPL-2.1-or-later Coverage

Documentation

Documentation is available on Read the Docs.

Make sure to read FAQ.

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

Do you need a similar tool for GraphQL? Check graphene-elastic.

Demos

Online demo

Check the live demo app (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 for more information.

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

docker-compose up

It will set up:

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
  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 :doc:`quick start tutorial <quick_start>`.

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 py38-django30

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-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 <[email protected]>

More Repositories

1

django-fobi

Form generator/builder application for Django done right: customisable, modular, user- and developer- friendly.
Python
469
star
2

django-dash

Customisable, modular dashboard application framework for Django.
Python
379
star
3

transliterate

Bi-directional transliterator for Python. Transliterates (unicode) strings according to the rules specified in the language packs.
Python
277
star
4

tld

Extracts the top level domain (TLD) from the URL given.
Python
159
star
5

graphene-elastic

Graphene Elasticsearch/OpenSearch (DSL) integration
Python
69
star
6

django-rest-framework-tricks

Collection of various tricks for Django REST framework.
Python
61
star
7

starbase

DEPRECATED - HBase Stargate (REST API) client wrapper for Python.
Python
53
star
8

django-admin-timeline

A Facebook-like timeline app for Django admin. It's very similar to built-in feature Daily progress, but has nicer templates and infinite scroll. Actions are broken up by day, then by action. It's possible to filter actions by user (multiple select) and content type (multiple select).
Python
52
star
9

ska

Sign data using symmetric-key algorithm encryption. Validate signed data and identify possible validation errors. Uses sha-(1, 224, 256, 385 and 512)/hmac for signature encryption. Custom hash algorithms are allowed. Useful shortcut functions for signing (and validating) dictionaries and URLs.
Python
41
star
10

django-debug-toolbar-force

Show Django Debug Toolbar in non- or partial-HTML views.
Python
13
star
11

django-qartez

The missing XML sitemaps for Django: images sitemap, static sitemaps, alternate hreflang sitemaps.
Python
13
star
12

django-slim

Simple implementation of multi-lingual models for Django. Django-admin integration works out of the box. Supports django-localeurl integration.
Python
13
star
13

django-mongoengine-filter

django-filter for MongoEngine
Python
12
star
14

django-werewolf

DEPRECATED - Item publishing workflow for Django (fully integrated into Django admin).
Python
11
star
15

pif

Public IP address checker.
Python
10
star
16

radar

Generate random date(time) in Python.
Python
10
star
17

django-bleach

Integrate awesome Bleach library into Django
Python
8
star
18

faker-file

Create files with fake data. In many formats. With no efforts.
Python
7
star
19

vishap

Generate embed (HTML) code of services like Youtube or Vimeo from URLs given
Python
5
star
20

the-great-suspender-restore-urls

Restore the broken URLs of the Great Suspender browser (Google Chrome, Firefox) extension.
Python
5
star
21

valuta

Currencies done right.
Python
4
star
22

django-i18next

Additions to Django's i18n module. https://pypi.python.org/pypi/django-i18next
Python
4
star
23

elasticsearch-head-firefox

Elasticsearch head Firefox add-on
JavaScript
3
star
24

django-nine

Version checking library for Django.
Python
3
star
25

the-great-suspender-restore-urls-service

Service for restoring the broken URLs of the Great Suspender browser (Google Chrome, Firefox) extension
Vue
3
star
26

django-nonefield

None field for Django. https://pypi.python.org/pypi/django-nonefield
Python
2
star
27

matyan

Generate change log from Git commits
Python
2
star
28

xinput

Enable/disable xinput devices (for example, a touchpad) from terminal or using the API.
Python
2
star
29

django-dummy-thumbnails

Dummy thumbnails for most popular Django thumbnail generators.
Python
2
star
30

scrapy-mongoengine-item

Scrapy extension to write scraped items using `mongoengine` documents
Python
2
star
31

charmy

DEPRECATED - Automated PyCharm installer for Linux.
Python
2
star
32

rebus

Generate base64-encoded strings consisting of alphanumeric symbols only. https://pypi.python.org/pypi/rebus
Python
1
star
33

django-strawberry

Additional fields for(ever) Django.
Python
1
star
34

django-elasticsearch-dsl-drf-heroku-demo

Heroku demo for django-elasticsearch-dsl-drf
Python
1
star
35

itnpy

A simple, deterministic, and extensible approach to inverse text normalization (ITN) for numbers.
Python
1
star
36

graphene-elastic-heroku-demo

Heroku demo for graphene-elastic
Python
1
star
37

elk-stack-container-example

ELK stack (example) with Docker
Python
1
star
38

django-ormex

Django ORM extensions.
Python
1
star
39

anysearch

Compatibility library for smooth support of Elasticsearch and OpenSearch (including both *search and *search-dsl packages)
Python
1
star
40

django-eximagination

A Django template tag library which allows to download external images, store them locally and return the local path to locally stored image to a desired context variable.
Python
1
star