2015-05-21 5 views
6

Próbuję użyć ES jako indeksu dla mojego MongoDB. Udało mi się je z powodzeniem zintegrować, ale uważam, że interfejs API wyszukiwania jest dość skomplikowany i mylący. Interfejs API Java też nie jest zbyt pomocny.Uzyskiwanie wyniku wyszukiwania SearchResponse w ElasticSearch

Jestem w stanie znaleźć dokładne dopasowania, ale jak mogę uzyskać ten wynik? Oto mój kod:

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

Czy możesz to trochę bardziej rozbudować? Co chcesz jako wynik końcowy? –

+0

Chcę wyświetlić wynik w Sytem.out.println dla tego zapytania. – LaymoO

Odpowiedz

12

Nie jestem pewien, czy zrozumiałem twoje pytanie.

Jeśli chcesz wydrukować wynik swojej searchResponse zależności przykład powinno być coś takiego:

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

Używam Gson przekonwertować z odpowiedzi JSON do zapory (POJO).

Mam nadzieję, że tego właśnie szukałeś.

+0

Dodałem coś, aby sformatować parametr daty w zdefiniowanym DateFormat –

+0

Nie Resulat :(Samy możesz dać mi swój adres? – LaymoO

+0

, jeśli wyniki są puste, twoje zapytanie nie może dać odpowiedzi.zapewnij się, że próbka danych powinna mieć wyniki. If wyniki nie są puste i Gson nie udało się przekonwertować z Json do POJO, upewnij się, że pola zwrócone w ElasticSearch są takie same z Object FireWall. –