Skip to main content
https://badge.fury.io/py/django-haystack-es.svg https://travis-ci.org/tehamalab/django-haystack-es.svg?branch=master https://codecov.io/gh/tehamalab/django-haystack-es/branch/master/graph/badge.svg

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

Tools used in rendering this package:

History

0.1.0 (2017-07-27)

  • First release on PyPI.

0.2.8 (2019-07-18)

  • Simplify Django Version in Tox.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django-haystack-es-0.2.8.tar.gz (14.9 kB view details)

Uploaded Source

File details

Details for the file django-haystack-es-0.2.8.tar.gz.

File metadata

  • Download URL: django-haystack-es-0.2.8.tar.gz
  • Upload date:
  • Size: 14.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.32.2 CPython/3.6.7

File hashes

Hashes for django-haystack-es-0.2.8.tar.gz
Algorithm Hash digest
SHA256 d4baa240d45da8a0d90031ba8807530c804b74c9026a70aa064378632301be85
MD5 c4bca34f50a8d27bc2cc7021606d54e0
BLAKE2b-256 2d7d4bd6e9e5db1a75c2b5ae7cf7fa64406e93a39d7875279dc0dc4c1406910f

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.2.8 This release

1 file

0.2.7

1 file

0.2.6

2 files

0.2.5

2 files

0.2.4

2 files

0.2.3

2 files

0.2.2

2 files

0.2.1

2 files

0.2.0

2 files

0.1.1

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page