2016-11-10 5 views
48

Ich habe eine Abfrage, die ich Ergebnisse ausfiltern muss.nein [query] registriert für [gefiltert]

Dies ist meine Abfrage

{ 
    "query": { 
     "filtered": { 
      "query": { 
       "multi_match": { 
        "default_operator": "AND", 
        "fields": [ 
         "author", 
         "title", 
         "publisher", 
         "year" 
        ], 
        "query": "George Orwell" 
       } 
      }, 
      "filter": { 
       "terms": { 
        "year": [ 
         1980, 
         1981 
        ] 
       } 
      } 
     } 
    } 
} 

ich einen Fehler sagen no [query] registered for [filtered]. Ich habe eindeutig eine Abfrage für das gefilterte Feld. Ich folge dem Format, das in der gefilterten Abfrage-Dokumentation auf der Elasticsearch-Seite angegeben ist. https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-filtered-query.html

Antwort

90

Die Abfrage filtered wurde veraltet und in ES 5.0 entfernt. Sie sollten jetzt stattdessen die Abfrage bool/must/filter verwenden.

{ 
    "query": { 
     "bool": { 
      "must": { 
       "multi_match": { 
        "operator": "and", 
        "fields": [ 
         "author", 
         "title", 
         "publisher", 
         "year" 
        ], 
        "query": "George Orwell" 
       } 
      }, 
      "filter": { 
       "terms": { 
        "year": [ 
         1980, 
         1981 
        ] 
       } 
      } 
     } 
    } 
} 

Hier sind die Unterschiede zwischen den beiden Abfragen:

3,4c3,4 
<   "bool": { 
<    "must": { 
--- 
>   "filtered": { 
>    "query": { 
6c6 
<      "operator": "and", 
--- 
>      "default_operator": "AND", 

PS: die Referenzseite, die Sie bei gesuchte in den „gelöschten Seiten“ der Anlage befindet, so ist es nicht Teil die Hauptdokumentation mehr.

+1

Bei der Verwendung von 5.5 scheint default_operator aus der Abfrage multi_match entfernt worden zu sein, also lohnt es sich vielleicht, diese Antwort zu aktualisieren, da sie mich in die falsche Richtung führte, vorausgesetzt, das obige würde funktionieren. Ich habe die Abfrage so geändert, dass sie meinen Feldern entspricht dann erkenne, dass es nicht funktioniert hat! Es war eine einfache Lösung für mich, obwohl bu nur den Standard-Operator entfernt, aber vielleicht für zukünftige Leser lesbar, Der Fehler ist: [multi_match] Abfrage unterstützt nicht [default_operator] – Birdy

+0

@Birdy eigentlich der Parameter heißt 'operator' und nicht' default_operator', ich habe meine Antwort geändert, tut mir leid. – Val

+0

Val - Wenn du eine Minute bekommst, hilf mir bitte bei einem Problem mit dem Logstasch, ich hau mir den Kopf über 48 Stunden vom Tisch haha ​​und ich weiß, dass du ein Experte auf dem Gebiet bist, der helfen könnte, den Tag zu retten Danke, ich wäre für immer verschuldet, wenn du könntest !! https://stackoverflow.com/questions/45577572/logstash-error-when-converting-mysql-value-to-nested-elasticsearch-property-on-s-s – Birdy

Verwandte Themen