I am using Java client API to get aggregations back. Following is the 
structure which I am dealing with.


aggregations
   top_models
       buckets
           key : "BMW"
          doc_count : 3
          top_models
               buckets
                   key : "X5"
                   doc_count : 2
                  top_hits
                       source
                          model : X5
                          color : Red
                      source
                         model:X5
                        color : White
               key : "X3"
                   doc_count : 1
                  top_hits
                       source
                          model : X3
                          color : Red
          key : "Mercedes"
          doc_count : 2
          top_models
               buckets
                   key : "Benz"
                   doc_count : 1
                   top_hits
                       source
                          model : Benz
                          color : Red
                      
                  key : "ML"
                  doc_count : 1
                  top_hits
                       source
                          model : ML
                          color : Black

I am trying following (toy) code to retrieve all the results. 

def getAggregations(aggres: Option[Aggregations]): Option[Iterable[Any]] = {

    aggres map { agg =>

      val aggS = agg.asMap().asScala

      aggS map {

        case (name, termAgg: Terms) => getBuckets(Option(termAgg.getBuckets
()))

        case (name, topHits: TopHits) =>

          val tHits = Option(topHits.getHits())

          tHits map { th => getTopHits(th.asScala)
        }

        case (h, a: InternalAvg) => println(h + "=>" + a.getValue());

      }



    }

  }



  def getBuckets(buckets: Option[java.util.Collection[Bucket]]) = {

    buckets map { bks =>

      val bksS = bks.asScala

      bksS map { b =>

        println("Bucket Key =>" + b.getKey())

        println("Doc count =>" + b.getDocCount())

        getAggregations(Option(b.getAggregations())

      }

    }

 }

I need to populate final result to this class 

  
case class FinalResponse(bucketName: String, count: Long, children: List[
FinalResponse])

With nested relationship between Aggregations and Buckets it's becoming 
convoluted to retrieve all aggregation results. how do you approach this?

-- 
You received this message because you are subscribed to the Google Groups 
"elasticsearch" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to elasticsearch+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/elasticsearch/b47ef1bd-9a15-4d37-94f2-95b687dfc0d4%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to