2017-04-12 2 views
1

Ich benutze derzeit elasticsearch Version 2.4 und möchte meine Ergebnismenge basierend auf einem Feld, das ich 'Typ' mit Abfrage Zeit Boost oder Gewichtung aufgerufen habe, Feinabstimmung.Abfrage Zeit Gewicht/Boost basierend auf Feld Wert

Zum Beispiel

Wenn der Wert des Feldes ‚Typ‘ ist „Boote“ ein Belastungs- oder Verstärkung von 4

hinzufügen Wenn der Wert des Feldes ‚Typ‘ ist „Caravans“ fügen Sie eine Gewichtung oder Boost von 3

Daher Boote vor, die die Abfrage Zeichenfolge übereinstimmte vor Caravans in den Suchergebnissen erscheinen.

Ich habe die Dokumentation, die ich bis jetzt gelesen habe, in Bezug auf Filter, Funktionen und Funktionsergebnisse sehr verschachtelt gefunden. Ich würde mich freuen, wenn jemand meinem Szenario ein Beispiel geben könnte, um mich zum Laufen zu bringen.

+0

Versuchen Sie die 'constant_score' Abfrage – RoiHatam

+1

Danke, große Antwort – vybe

Antwort

0

Sie sollten die constant_score Abfrage und die boost Option zu priorisieren verwenden.

{ 
    "query": { 
    "bool": { 
     "should": [ 
      { 
       "constant_score": { 
        "boost": 4, 
        "query": { 
         "match": { 
          "description": "Boats" 
         } 
        } 
       } 
      }, 
      { 
       "constant_score": { 
        "boost": 3, 
        "query": { 
         "match": { 
          "description": "Caravans" 
         } 
        } 
       } 
      } 
     ] 
    } 
    } 
} 
Verwandte Themen