Django-haystack: Ошибка запроса: [запрос] не зарегистрирован для [отфильтровано]

Созданный на 22 дек. 2017  ·  15Комментарии  ·  Источник: django-haystack/django-haystack

  • [x] Протестировано с последней версией Haystack.
  • [x] Протестировано с текущей основной веткой Haystack

Ожидаемое поведение

Я настроил страницу поиска 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>&nbsp;</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 }}&amp;{{ previous_number }}">{% endif %}&laquo; Previous{% if has_previous %}</a>{% endif %}
                    |
                    {% if has_next %}<a href="?q={{ query }}&amp;{{ next_number }}">{% endif %}Next &raquo;{% 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)

`` ''

Конфигурация

  • Версия операционной системы: Mac OS
  • Версия поисковой системы: Elastic Search 5.1.1
  • Версия Python: 2.7.10
  • Версия Django: 1.11.8
  • Версия Haystack: 2.6.1

Самый полезный комментарий

@acdha Я добился успеха с поддержкой ES5 в мастере. Просто может выпустить новую версию?

Все 15 Комментарий

Документы теперь говорят, что 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.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги