2015-05-21 11 views
6

Ich versuche, ES als den Index für meine MongoDB zu verwenden. Ich habe es geschafft, sie erfolgreich zu integrieren, aber ich finde die Such-API ziemlich komplex und verwirrend. Die Java API ist auch nicht sehr hilfreich.Das Ergebnis einer SearchResponse in ElasticSearch abrufen

Ich kann genaue Übereinstimmungen finden, aber wie kann ich dieses Ergebnis erhalten? Hier ist mein Code:

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

können Sie es ein wenig mehr ausarbeiten? Was willst du als Endergebnis? –

+0

Ich möchte das Ergebnis in Sytem.out.println für diese Abfrage anzeigen. – LaymoO

Antwort

12

Ich bin mir nicht ganz sicher, ob ich Ihre Frage verstanden habe.

Wenn Sie das Ergebnis Ihrer search nach Ihrem Beispiel drucken möchte, sollte es so etwas wie dieses:

 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)); 
      } 
     } 

ich Gson bin mit der Json Antwort auf die FireWall (POJO) zu konvertieren.

Ich hoffe, es ist, was Sie gesucht haben.

+0

Ich habe etwas hinzugefügt, um Ihren Date-Parameter in ein definiertes DateFormat zu formatieren –

+0

No Resulat :(Samy können Sie mir Ihre Adresse geben? – LaymoO

+0

Wenn die Ergebnisse leer sind, dann muss Ihre Antwort keine Antwort haben. Stellen Sie sicher, dass Ihre Datenprobe Ergebnisse haben sollte Ergebnisse ist nicht leer und Gson konnte nicht von Json zu POJO konvertieren, stellen Sie sicher, dass die in ElasticSearch zurückgegebenen Felder aus der Object FireWall identisch sind. –

Verwandte Themen