2013-07-10 14 views
11

Ich bin neu in ES und ich versuche eine Abfrage erstellen, die phrase_prefix für mehrere Felder verwenden würde, so dass ich nicht mehr als einmal suchen müssen.Elasticsearch Phrase Präfix Abfrage auf mehrere Felder

Hier ist, was ich bisher habe:

{ 
    "query" : { 
     "text" : { 
      "first_name" : { 
       "query" : "Gustavo", 
       "type" : "phrase_prefix" 
      } 
     } 
    } 
}' 

niemand weiß, wie man für mehr als ein Feld zu suchen, sagen Sie „last_name“?

Antwort

33

Die von Ihnen verwendete text query wurde vor einiger Zeit zugunsten der match query veraltet (effektiv umbenannt). Die Übereinstimmungsabfrage unterstützt ein einzelnes Feld, aber Sie können die multi_match query verwenden, die die gleichen Optionen unterstützt und die Suche nach mehreren Feldern ermöglicht. Hier ist ein Beispiel, das Sie vielleicht nützlich sein sollte:

{ 
    "query" : { 
     "multi_match" : { 
      "fields" : ["title", "subtitle"], 
      "query" : "trying out ela", 
      "type" : "phrase_prefix" 
     } 
    } 
} 

Sie können das gleiche erreichen, um die Java-API wie folgt aus:

QueryBuilders.multiMatchQuery("trying out ela", "title", "subtitle") 
    .type(MatchQueryBuilder.Type.PHRASE_PREFIX); 
+0

awesome! vielen Dank! Übrigens, weißt du zufällig, wie du das in Java erreichen kannst? Ich kann nicht in den Dokumenten finden .. http://rajish.github.io/api/elasticsearch/0.20.0.Beta1-SNAPSHOT/org/elasticsearch/index/query/QueryBuilders.html#multiMatchQuery(java.lang. Objekt, java.lang.String ...) –

+0

Schauen Sie sich meine aktualisierte Antwort an;) – javanna

+4

omg Ich liebe dich! –

Verwandte Themen