2015-05-21 10 views
6

Sto cercando di utilizzare ES come indice per il mio MongoDB. Sono riuscito a integrarli con successo, ma trovo l'API di ricerca piuttosto complessa e confusa. L'API Java non è troppo utile neanche.Ottenere il risultato di una risposta di ricerca in ElasticSearch

Sono in grado di trovare corrispondenze esatte, ma come posso ottenere questo risultato? Ecco il mio codice:

Node node = nodeBuilder().node(); 

SearchResponse sr = node.client().prepareSearch() 
     .addAggregation(
      AggregationBuilders.terms("user").field("admin2san") 
      .subAggregation(AggregationBuilders.terms("SPT").field("64097")) 
     ) 
     .execute().actionGet(); 

SearchHit[] results = sr.getHits().getHits(); 
List<Firewall> myfirewall = results.getSourceAsObjectList(Firewall.class); 
for (Firewall info : myfirewall) { 
     System.out.println("search result is " + info); 
} 
+0

puoi elaborarlo un po 'di più? Cosa vuoi come risultato finale? –

+0

Desidero visualizzare il risultato in Sytem.out.println per questa query. – LaymoO

risposta

12

Non sono abbastanza sicuro di aver capito la tua domanda.

Se si desidera stampare il risultato della vostra SearchResponse secondo il tuo esempio dovrebbe essere qualcosa di simile:

 SearchHit[] results = sr.getHits().getHits(); 
     for(SearchHit hit : results){ 

      String sourceAsString = hit.getSourceAsString(); 
      if (sourceAsString != null) { 
       Gson gson = new GsonBuilder().setDateFormat(dateFormat) 
         .create(); 
       System.out.println(gson.fromJson(sourceAsString, Firewall.class)); 
      } 
     } 

sto usando GSON convertire dalla risposta JSON al firewall (POJO).

Spero che sia quello che stavi cercando.

+0

Ho aggiunto qualcosa per formattare il parametro data in un DateFormato definito –

+0

No Resulat :(Samy puoi fornirmi il tuo indirizzo? – LaymoO

+0

se i risultati sono vuoti, allora il tuo resuest non deve avere alcuna risposta assicurati che il tuo campione di dati abbia dei risultati Se i risultati non sono vuoti e Gson non è riuscito a convertire da Json a POJO, assicurarsi che i campi restituiti in ElasticSearch siano gli stessi dell'Oggetto FireWall. –

Problemi correlati