Django elasticsearch integration.
Project description
This is Django application that helps intergrate Django with elasticsearch. It is built on top of elasticsearch-dsl.
Project aims to support Python 3 and Django 1.8 (at least).
The library is in development, use it carefully, because until stable an API is a subject to change.
Quickstart
Configure your models to be indexable:
from django.db import models from el.models import Indexed class Article(models.Model, Indexed): title = models.CharField(max_length=78) @classmethod def get_indexable(cls): return cls.objects.all() @classmethod def configure_mapping(cls, mapping): # mapping is an elasticsearch_dsl Mapping object mapping.field('title', 'string') return mapping
From this moment, the Article model will be autodiscovered and indexed.
Update search indexes:
./manage.py update_index
Use elasticsearch_dsl to query:
# articles is a list of an Article instances articles = Article.search().query('match', title="Bob's article").execute() # articles is a list of elasticsearch_dsl hits articles = Article.search().query('match', title="Bob's article").execute(cast=False)
In contrast with elasticsearch_dsl, django-el provides modified Search object which return django model instances instead of raw elasticsearch results by default. You can control this feature using the cast argument.
Installation
Install django-el as usual python package using pip:
pip install django-el
Configuration
Django-el is build on top of elasticsearch_dsl library and provides django-way connections configuration through settings.py:
ELASTICSEARCH_CONNECTIONS = { 'default': { 'hosts': ['127.0.0.1:9200'], 'serializer': 'project.serializers.MySerializer', } }
You can define project connections using ELASTICSEARCH_CONNECTIONS setting. It is just a hight-level interface over low-level elasticsearch_dsl.connections.connections.create_connection function.
The keys are (default, in this example) are connection aliases, and it’s values are create_connection arguments.
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.