Integrate Elasticsearch DSL with Django REST framework.
Project description
============================
django-elasticsearch-dsl-drf
============================
Integrate `Elasticsearch DSL
<https://pypi-hypernode.com/pypi/elasticsearch-dsl>`_ with
`Django REST framework <https://pypi-hypernode.com/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-hypernode.com/pypi/django-elasticsearch-dsl>`_ for defining your
Elasticsearch documents.
Prerequisites
=============
- Django 1.8, 1.9, 1.10, 1.11 and 2.0.
- Python 2.7, 3.4, 3.5, 3.6
- Elasticsearch 2.x, 5.x
Dependencies
============
- `django-elasticsearch-dsl <https://pypi-hypernode.com/pypi/django-elasticsearch-dsl>`_
- `djangorestframework <https://pypi-hypernode.com/pypi/djangorestframework>`_
Documentation
=============
Documentation is available on `Read the Docs
<http://django-elasticsearch-dsl-drf.readthedocs.io/>`_.
Main features and highlights
============================
- `Dynamic serializer for Documents <http://django-elasticsearch-dsl-drf.readthedocs.io/en/0.9/basic_usage_examples.html#sample-serializer>`_.
- `Search filter backend <http://django-elasticsearch-dsl-drf.readthedocs.io/en/0.9/advanced_usage_examples.html#search>`_.
- `Ordering filter backend <http://django-elasticsearch-dsl-drf.readthedocs.io/en/0.9/advanced_usage_examples.html#ordering>`_.
- `Filtering filter backend <http://django-elasticsearch-dsl-drf.readthedocs.io/en/0.9/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.9/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.9/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.9/advanced_usage_examples.html#faceted-search>`_.
- `Post-filter filter backend <http://django-elasticsearch-dsl-drf.readthedocs.io/en/0.9/advanced_usage_examples.html#post-filter>`_.
- :doc:`Nested filtering filter backend <nested_fields_usage_examples>`.
- `Highlight backend <http://django-elasticsearch-dsl-drf.readthedocs.io/en/0.9/advanced_usage_examples.html#highlighting>`_.
- `Suggester filter backend <http://django-elasticsearch-dsl-drf.readthedocs.io/en/0.9/advanced_usage_examples.html#suggestions>`_.
- `Functional suggester filter backend <http://django-elasticsearch-dsl-drf.readthedocs.io/en/0.9/advanced_usage_examples.html#functional-suggestions>`_.
- `Pagination (Page number and limit/offset pagination) <http://django-elasticsearch-dsl-drf.readthedocs.io/en/0.9/advanced_usage_examples.html#pagination>`_.
- `Ids filter backend <http://django-elasticsearch-dsl-drf.readthedocs.io/en/0.9/advanced_usage_examples.html#ids-filter>`_.
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
or latest stable version from BitBucket:
.. code-block:: sh
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``:
.. 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.9/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 py36-django110
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
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/LGPL 2.1
Support
=======
For any issues contact me at the e-mail given in the `Author`_ section.
Author
======
Artur Barseghyan <artur.barseghyan@gmail.com>
django-elasticsearch-dsl-drf
============================
Integrate `Elasticsearch DSL
<https://pypi-hypernode.com/pypi/elasticsearch-dsl>`_ with
`Django REST framework <https://pypi-hypernode.com/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-hypernode.com/pypi/django-elasticsearch-dsl>`_ for defining your
Elasticsearch documents.
Prerequisites
=============
- Django 1.8, 1.9, 1.10, 1.11 and 2.0.
- Python 2.7, 3.4, 3.5, 3.6
- Elasticsearch 2.x, 5.x
Dependencies
============
- `django-elasticsearch-dsl <https://pypi-hypernode.com/pypi/django-elasticsearch-dsl>`_
- `djangorestframework <https://pypi-hypernode.com/pypi/djangorestframework>`_
Documentation
=============
Documentation is available on `Read the Docs
<http://django-elasticsearch-dsl-drf.readthedocs.io/>`_.
Main features and highlights
============================
- `Dynamic serializer for Documents <http://django-elasticsearch-dsl-drf.readthedocs.io/en/0.9/basic_usage_examples.html#sample-serializer>`_.
- `Search filter backend <http://django-elasticsearch-dsl-drf.readthedocs.io/en/0.9/advanced_usage_examples.html#search>`_.
- `Ordering filter backend <http://django-elasticsearch-dsl-drf.readthedocs.io/en/0.9/advanced_usage_examples.html#ordering>`_.
- `Filtering filter backend <http://django-elasticsearch-dsl-drf.readthedocs.io/en/0.9/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.9/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.9/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.9/advanced_usage_examples.html#faceted-search>`_.
- `Post-filter filter backend <http://django-elasticsearch-dsl-drf.readthedocs.io/en/0.9/advanced_usage_examples.html#post-filter>`_.
- :doc:`Nested filtering filter backend <nested_fields_usage_examples>`.
- `Highlight backend <http://django-elasticsearch-dsl-drf.readthedocs.io/en/0.9/advanced_usage_examples.html#highlighting>`_.
- `Suggester filter backend <http://django-elasticsearch-dsl-drf.readthedocs.io/en/0.9/advanced_usage_examples.html#suggestions>`_.
- `Functional suggester filter backend <http://django-elasticsearch-dsl-drf.readthedocs.io/en/0.9/advanced_usage_examples.html#functional-suggestions>`_.
- `Pagination (Page number and limit/offset pagination) <http://django-elasticsearch-dsl-drf.readthedocs.io/en/0.9/advanced_usage_examples.html#pagination>`_.
- `Ids filter backend <http://django-elasticsearch-dsl-drf.readthedocs.io/en/0.9/advanced_usage_examples.html#ids-filter>`_.
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
or latest stable version from BitBucket:
.. code-block:: sh
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``:
.. 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.9/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 py36-django110
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
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/LGPL 2.1
Support
=======
For any issues contact me at the e-mail given in the `Author`_ section.
Author
======
Artur Barseghyan <artur.barseghyan@gmail.com>
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
Close
Hashes for django-elasticsearch-dsl-drf-0.9.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 64b3c1d529bbb0d654832fcf21b189d806f5e409c28c12d1a1db390729d88ccf |
|
MD5 | ac74bd684083ffe3e37efbb4f17b45ab |
|
BLAKE2b-256 | dbc077202993ea18d124dba11280cab7746018f9c8eee257d9ad3869bb4d4875 |
Close
Hashes for django_elasticsearch_dsl_drf-0.9-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a843a23dae58b980730254985afc9872a34ab272f71ec9b7c06d775080a4dd38 |
|
MD5 | a83659f910aa799389a3fceec86d652c |
|
BLAKE2b-256 | d31f0cfb22a2107305ca9fcfe9b1807d0ba427c9bc43b610e4e0b1e9d10beb87 |