Я настроил страницу поиска Haystack на основе учебника readthedocs и получаю сообщение об ошибке при любом поиске, который я выполняю на настроенной мной модели. Я отправляю поиск и получаю это сообщение об ошибке взамен
raise HTTP_EXCEPTIONS.get(status_code, TransportError)(status_code, error_message, additional_info)
RequestError: TransportError(400, u'parsing_exception', u'no [query] registered for [filtered]')
search.html
{% extends 'layouts/base.html' %}
{% block title %}
Homepage - {{ block.super }}
{% endblock %}
{% block content %}
<h2>Search</h2>
<form method="get" action=".">
<table>
{{ form.as_table }}
<tr>
<td> </td>
<td>
<input type="submit" value="Search">
</td>
</tr>
</table>
{% if query %}
<h3>Results</h3>
{% for result in object_list %}
<p>
<a href="{{ result.object.get_absolute_url }}">{{ result.object.name }}</a>
</p>
{% empty %}
<p>No results found.</p>
{% endfor %}
{% if has_previous or has_next %}
<div>
{% if has_previous %}<a href="?q={{ query }}&{{ previous_number }}">{% endif %}« Previous{% if has_previous %}</a>{% endif %}
|
{% if has_next %}<a href="?q={{ query }}&{{ next_number }}">{% endif %}Next »{% if page.has_next %}</a>{% endif %}
</div>
{% endif %}
{% else %}
{# Show some example queries to run, maybe query syntax, something else? #}
{% endif %}
</form>
{% endblock %}
````
**search_indexes.py**
дата и время импорта
из индексов импорта стога сена
из .models import *
класс SponsorIndex (indexes.SearchIndex, indexes.Indexable):
текст = indexes.CharField (документ = True, use_template = True)
name = indexes.CharField (model_attr = 'имя')
Life_value = indexes.DecimalField (model_attr = 'Life_value', по умолчанию = 0)
number_of_events_sponsored = indexes.IntegerField (model_attr = 'number_of_events_sponsored', по умолчанию = 0)
date_created = indexes.DateField (model_attr = 'date_created')
def get_model(self):
return Sponsor
def index_queryset(self, using=None):
"""Used when the entire index for model is updated."""
return self.get_model().objects.filter(date_created__lte=datetime.datetime.now())
**Sponsor model**
Спонсор класса (models.Model):
name = models.CharField (max_length = 255)
email = models.EmailField (max_length = 255, null = True, blank = True)
contacts = models.ManyToManyField (
'Пользователь',
blank = True,
)
значение времени жизни = models.DecimalField (max_digits = 12, decimal_places = 2, null = True, blank = True)
number_of_events_sponsored = models.IntegerField (null = True, blank = True)
average_amount_spent_per_sponsorship = models.DecimalField (max_digits = 12, decimal_places = 2, null = True, blank = True)
date_created = models.DateField (auto_now_add = True)
def __unicode__(self):
return self.name
def indexing(self):
obj = SponsorIndex(
meta={'id': self.id},
name=self.name,
date_created=self.date_created,
lifetime_value=self.lifetime_value,
)
obj.save()
return obj.to_dict(include_meta=True)
`` ''
Документы теперь говорят, что 5.x поддерживается, но проблема остается.
То же самое, проблема с 5.x
ES5 поддерживается и работает. Я бы проверил вашу конфигурацию по первому набору тестов.
Фактически нет elasticsearch5_backend в последней стабильной версии (2.8.1). Похоже, он еще не выпущен.
Я согласен с @racktear , elasticsearch5_backend не является частью 2.8.1, но находится в основной ветке.
для тех, кто хочет попробовать, установите master с помощью git.
pip install git+https://github.com/django-haystack/django-haystack
Как всегда, приветствуется тестирование. В наши дни у меня очень ограниченное время для работы над Haystack, и если кто-то захочет взять на себя поддержку ElasticSearch, это будет большим вкладом.
@acdha Я добился успеха с поддержкой ES5 в мастере. Просто может выпустить новую версию?
У меня такая же проблема с эластичным поиском 6.4.0
in _raise_error
raise HTTP_EXCEPTIONS.get(status_code, TransportError)(status_code, error_message, additional_info)
elasticsearch.exceptions.RequestError: RequestError(400, 'parsing_exception', 'no [query] registered for [filtered]')
У меня такая же проблема с эластичным поиском 5.6.1. Может ли кто-нибудь мне помочь?
elasticsearch.exceptions.RequestError: TransportError (400, 'parsing_exception', '[запрос] не зарегистрирован для [отфильтрованного]')
У меня такая же проблема с elasticsearch 6.6, может ли кто-нибудь мне помочь?
elasticsearch.exceptions.RequestError: TransportError (400, 'parsing_exception', 'Нет [запрос] зарегистрирован [отфильтрован]')
Есть новости по этому поводу?
elasticsearch 5.6.16, используя мастер стога сена, как было предложено, но все же
TransportError (400, 'parsing_exception', '[запрос] не зарегистрирован для [отфильтрованный]')
Убедитесь, что в ваших настройках HAYSTACK_CONNECTIONS есть ENGINE: 'search.backends.elasticsearch5_backend.Elasticsearch5SearchEngine' Я как-то пропустил это в документации, если он там, и он решил мои проблемы
Предложение @isakbosman у меня сработало (вместе с установкой elasticsearch>=5.0.0,<6.0.0
). Я тестировал с помощью мастер-кода. Пробовал последнюю версию pip, но ее заблокировал # 1732.
Самый полезный комментарий
@acdha Я добился успеха с поддержкой ES5 в мастере. Просто может выпустить новую версию?