django-haystack-es 0.2.8

Creator: codyrutscher

Last updated:

Add to Cart

Description:

djangohaystackes 0.2.8

Django Haystack backend for Elasticsearch 5.

Quickstart
Install Django Haystack ES:
pip install django-haystack-es
Add haystack_es.backends.ElasticsearchSearchEngine to your HAYSTACK_CONNECTIONS engine in settings.py
Example
HAYSTACK_CONNECTIONS = {
'default': {
'ENGINE': 'haystack_es.backends.Elasticsearch5SearchEngine',
# ...
}
}
Define your indexes using haystack_es.indexes instead of haystack.indexes.
Example
# myapp/search_indexes.py

from haystack_es import indexes
from myapp.models import MyModel


class MyModelIndex(indexes.SearchIndex, indexes.Indexable):
text = indexes.CharField(document=True, use_template=True)
# ...
If you have celery-haystack installed you can use
haystack_es.indexes.CelerySearchIndex for defining your SearchIndex utilizing celery-haystack
If you want to utilize additional SearchQuerySet methods use haystack_es.query.SearchQuerySet
instead of haystack.query.SearchQuerySet.
Example
from haystack_es.query import SearchQuerySet

sqs = SearchQuerySet().filter(content='some query')
sqs.boost_fields({'field_name': 2, 'some_field': 1.5, 'another_field': 1})
sqs.facet('some_field')
# ...


Differences compared to the default django-haystack Elasticsearch backend

Intended for Elasticsearch >= 5
Allows query-time fields boosting.
Allows query-time
negative boost
Provides additional SearchFields; DictField, NestedField and GeometryField
Tries to use Elasticsearch
filter context
instead of query string for filtering results.
Uses multi-fields
for creating shadow fields which are useful for performing operations like
faceting and exact matches which need non-analyzed values.



Query-time fields boosting
from haystack_es.query import SearchQuerySet
SearchQuerySet().boost_fields(boost_fields)
Example SearchQuerySet().boost_fields({'field_name': 2, 'another_field': 1})


Negative boosting
from haystack_es.query import SearchQuerySet
SearchQuerySet().boost_negative(query, negative_boost)
example
SearchQuerySet().boost_negative({'match': {'category.raw': 'awful type'}}, negative_boost)


Running Tests
Does the code actually work?
source <YOURVIRTUALENV>/bin/activate
(myenv) $ pip install tox
(myenv) $ tox


Credits
Inspired by

haystack-elasticsearch5: https://github.com/Alkalit/haystack-elasticsearch5

Tools used in rendering this package:

Cookiecutter
cookiecutter-djangopackage



History

0.1.0 (2017-07-27)

First release on PyPI.



0.2.8 (2019-07-18)

Simplify Django Version in Tox.

License

For personal and professional use. You cannot resell or redistribute these repositories in their original state.

Customer Reviews

There are no reviews.