2013-07-10 7 views
11

Sono nuovo di ES e sto cercando di creare una query che utilizzi phrase_prefix per più campi, quindi non devo cercare più di una volta.Query prefisso frase Elasticsearch su più campi

Ecco quello che ho finora:

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

Qualcuno sa come cercare più di un campo, dire "cognome"?

risposta

33

Il text query che si sta utilizzando è stato deprecato (efficacemente rinominato) qualche tempo fa a favore di match query. La query di corrispondenza supporta un singolo campo, ma è possibile utilizzare lo multi_match query che supporta le stesse opzioni e consente di effettuare ricerche su più campi. Ecco un esempio che dovrebbe essere utile a voi:

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

È possibile ottenere lo stesso utilizzando l'API Java in questo modo:

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

impressionante! Grazie mille! a proposito, sai per caso come realizzare questo in Java? Non riesco a trovarlo nei documenti. Http://rajish.github.io/api/elasticsearch/0.20.0.Beta1-SNAPSHOT/org/elasticsearch/index/query/QueryBuilders.html#multiMatchQuery(java.lang. Object, java.lang.String ...) –

+0

Dai un'occhiata alla mia risposta aggiornata;) – javanna

+4

omg I love you! –