2015-05-21 31 views
6

'da bir SearchResponse'nin sonucunu alma ES'yi MongoDB'im için indeks olarak kullanmaya çalışıyorum. Bunları başarıyla entegre ettim, ancak arama API'sini oldukça karmaşık ve kafa karıştırıcı buluyorum. Java API da çok yararlı değildir.ElasticSearch

Tam eşleşmeleri bulabiliyorum, ancak bu sonucu nasıl alabilirim? Benim kodum:

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

biraz daha detaylandırır mısınız? Son sonuç olarak ne istiyorsunuz? –

+0

Bu sorgu için Sytem.out.println sonucunu görüntülemek istiyorum. – LaymoO

cevap

12

Sorunu anladığımdan emin değilim. Ben FireWall'da (POJO) için Json yanıtından dönüştürmek GSON kullanıyorum

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

: Eğer örneğe göre sizin SearchResponse sonucunu yazdırmak isterseniz

böyle bir şey olması gerekir.

Umarım aradığınız şey budur.

+0

Tarih parametrenizi tanımlı bir DateFormat biçiminde biçimlendirmek için bir şey ekledim –

+0

Hayır Resulat :(Samy adresinizi verebilir misiniz? – LaymoO

+0

sonuç boşsa o zaman yanıtınızın yanıtı olmamalıdır.Veri örneğinizin sonuçlarının olması gerekir. sonuçlar boş değil ve Gson, Json'dan POJO'ya dönüştürülemedi, ElasticSearch'te döndürülen alanların Object FireWall'dan aynı olduğundan emin olun. –