# settings.py
...
HAYSTACK_CONNECTIONS = {
'default': {
'ENGINE': 'haystack.backends.elasticsearch5_backend.Elasticsearch5SearchEngine',
'URL': 'http://localhost:9200/',
'INDEX_NAME': 'my_search_index',
},
}
# models.py
from django.db import models
from haystack import indexes
class Article(models.Model):
title = models.CharField(max_length=100)
content = models.TextField()
class ArticleIndex(indexes.SearchIndex, indexes.Indexable):
text = indexes.CharField(document=True, use_template=True)
title = indexes.CharField(model_attr='title')
def get_model(self):
return Article
def index_queryset(self, using=None):
return self.get_model().objects.all()
# article_text.txt
{{ object.title }}
{{ object.content }}
# views.py
from haystack.query import SearchQuerySet
from django.shortcuts import render
def search(request):
query = request.GET.get('q', '')
articles = SearchQuerySet().filter(content=query)
return render(request, 'search.html', {'articles': articles})