Registry /
web-framework / django-elasticsearch-dsl-drf
Install & Compatibility
Where this runs
No compatibility data collected yet for this library.
Code
Verified usage
Verified import paths — ran on the pinned version, not inferred.
DocumentViewSet
✓ from django_elasticsearch_dsl_drf.viewsets import DocumentViewSet
✗ from django_elasticsearch_dsl_drf.viewsets import DocumentViewSet
Basic setup: configure Elasticsearch, define a document, create a DocumentViewSet with filter backends, and register a router.
# settings.py
INSTALLED_APPS = [
...
'django_elasticsearch_dsl',
'django_elasticsearch_dsl_drf',
]
ELASTICSEARCH_DSL = {
'default': {
'hosts': 'localhost:9200'
},
}
# documents.py
from django_elasticsearch_dsl import Document, Index
from myapp.models import MyModel
PUBLISHED_INDEX = Index('my_models')
PUBLISHED_INDEX.settings(
number_of_shards=1,
number_of_replicas=0
)
@PUBLISHED_INDEX.doc_type
def MyModelDocument(Document):
class Django:
model = MyModel
fields = [
'id',
'title',
'description',
]
# views.py
from django_elasticsearch_dsl_drf.viewsets import DocumentViewSet
from django_elasticsearch_dsl_drf.filter_backends import (
FilteringFilterBackend,
SearchFilterBackend,
OrderingFilterBackend,
)
from .documents import MyModelDocument
from .serializers import MyModelSerializer
class MyModelDocumentViewSet(DocumentViewSet):
document = MyModelDocument
serializer_class = MyModelSerializer
filter_backends = [
FilteringFilterBackend,
SearchFilterBackend,
OrderingFilterBackend,
]
search_fields = ('title', 'description')
filter_fields = {
'title': 'title',
}
ordering_fields = {
'id': 'id',
}
# urls.py
from django.urls import path, include
from rest_framework.routers import DefaultRouter
from .views import MyModelDocumentViewSet
router = DefaultRouter()
router.register(r'my-models', MyModelDocumentViewSet, basename='mymodel')
urlpatterns = [
...
path('api/', include(router.urls)),
]
Upgrade
Version history
0.22.5latest on PyPI · released Jul 3, 2022
Audit
Dependencies
djangorequiredCore dependency
djangorestframeworkrequiredRequired for DRF integration
elasticsearch-dslrequiredRequired for Elasticsearch DSL interaction
elasticsearchrequiredRequired for low-level Elasticsearch client (usually elasticsearch<7.14 for compatibility)