Django-haystack: Anfragefehler: keine [Abfrage] registriert für [gefiltert]

Erstellt am 22. Dez. 2017  ·  15Kommentare  ·  Quelle: django-haystack/django-haystack

  • [x] Getestet mit der neuesten Haystack-Version
  • [x] Getestet mit dem aktuellen Haystack-Master-Zweig

Erwartetes Verhalten

Ich habe die Haystack-Suchseite basierend auf dem Readthedocs-Tutorial eingerichtet und erhalte bei jeder Suche, die ich für das von mir konfigurierte Modell durchführe, eine Fehlermeldung. Ich reiche eine Suche ein und erhalte diese Fehlermeldung zurück

Tatsächliches Verhalten

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]')

Schritte zum Reproduzieren des Verhaltens

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**

Datum/Uhrzeit importieren
aus Heuhaufen-Importindizes
aus .models-Import *

Klasse SponsorIndex(indexes.SearchIndex, indexes.Indexable):
text = indexes.CharField(document=True, use_template=True)
name = indexes.CharField(model_attr='name')
lifetime_value = indexes.DecimalField(model_attr='lifetime_value',default=0)
number_of_events_sponsored = indexes.IntegerField(model_attr='number_of_events_sponsored',default=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**

Klasse Sponsor (Modelle.Modell):
name = modelle.CharField(max_length=255)
email = models.EmailField(max_length=255,null=True,blank=True)
Kontakte = Modelle.ManyToManyField(
'Nutzer',
blank=wahr,
)
life_time_value = 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)

```

Aufbau

  • Betriebssystemversion: Mac OS
  • Suchmaschinenversion: Elastic Search 5.1.1
  • Python-Version: 2.7.10
  • Django-Version: 1.11.8
  • Heuhaufen-Version: 2.6.1

Hilfreichster Kommentar

@acdha Ich hatte Erfolg mit der ES5-Unterstützung in Master. Vielleicht nur eine neue Version veröffentlichen?

Alle 15 Kommentare

@whob13 , Elasticsearch 5.x wird noch nicht unterstützt, bitte besuchen Sie das Dokument http://django-haystack.readthedocs.io/en/master/installing_search_engines.html

Docs sagen jetzt, dass 5.x unterstützt wird, aber das Problem bleibt bestehen.

Habe dieses Problem auch mit 5.x

ES5 wird unterstützt und funktioniert. Ich würde deine Konfiguration zuerst mit der der Testsuite vergleichen

Im neuesten stabilen Release (2.8.1) gibt es eigentlich kein elasticsearch5_backend. Sieht so aus, als wäre es noch nicht erschienen.

Ich stimme @racktear zu ,

für diejenigen, die es ausprobieren möchten, installieren Sie master mit git.
pip install git+https://github.com/django-haystack/django-haystack

Testen ist wie immer erwünscht. Ich habe heutzutage nur sehr begrenzte Zeit, um an Haystack zu arbeiten, und wenn jemand die Wartung des ElasticSearch-Supports übernehmen möchte, wäre das ein großartiger Beitrag.

@acdha Ich hatte Erfolg mit der ES5-Unterstützung in Master. Vielleicht nur eine neue Version veröffentlichen?

Ich habe das gleiche Problem mit der elastischen Suche 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]')

Ich habe auch das gleiche Problem mit der elastischen Suche 5.6.1. Kann mir jemand helfen?

elastischesearch.Exceptions.RequestError: TransportError(400, 'parsing_Exception', 'no [query] registriert für [gefiltert]')

Ich habe das gleiche Problem mit Elasticsearch 6.6, kann mir jemand helfen?

elastischesearch.Exceptions.RequestError: TransportError(400,'parsing_exception','Keine [Abfrage] registriert [gefiltert]')

Gibt es hierzu Neuigkeiten ?

elasticsearch 5.6.16, mit Haystack Master wie vorgeschlagen, aber immer noch
TransportError(400, 'parsing_Exception', 'no [query] registriert für [gefiltert]')

Stellen Sie sicher, dass Ihre HAYSTACK_CONNECTIONS-Einstellungen ENGINE: 'search.backends.elasticsearch5_backend.Elasticsearch5SearchEngine' haben

Der Vorschlag von @isakbosman hat bei mir funktioniert (zusammen mit der Installation von elasticsearch>=5.0.0,<6.0.0 ). Getestet habe ich mit Mastercode. Habe die neueste Pip-Version ausprobiert, wurde aber von #1732 blockiert.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen

Verwandte Themen

omonte picture omonte  ·  3Kommentare

clairempr picture clairempr  ·  3Kommentare

mdf-github picture mdf-github  ·  8Kommentare

ajwillo picture ajwillo  ·  3Kommentare

kristoff-it picture kristoff-it  ·  3Kommentare