title: get a specific value based on criteria from elasticsearch array using java
body: <p>My elastic search data looks like</p>
  
  <pre><code>{
    "took": 12,
    "timed_out": false,
    "_shards": {
      "total": 5,
      "successful": 5,
      "failed": 0
    },
    "hits": {
      "total": 2,
      "max_score": 1,
      "hits": [
        {
          "_index": "eswar",
          "_type": "azure",
          "_id": "AV6y005oafdLlkt7Fe-R",
          "_score": 1,
          "_source": {
            "costs": [
              {
                "cost": 3.6,
                "endDate": "2017-02-15T00:00:00+00:00",
                "startDate": "2017-02-14T00:00:00+00:00"
              },
              {
                "cost": 2,
                "endDate": "2017-02-14T00:00:00+00:00",
                "startDate": "2017-02-13T00:00:00+00:00"
              }
            ],
            "externalUUID": "/subscriptions/9ee6993f-a036-4118-9eab-c66d9fda1ef3/resourceGroups/VISTARAGATEWAYIMAGE/providers/Microsoft.Compute/disks/VistaraGateway01_disk1_ec7798e17f934e6483ed5d2490e80d98",
            "clientId": 154,
            "region": "useast",
            "cloudProviderId": 57063
          }
        },
        {
          "_index": "eswar",
          "_type": "azure",
          "_id": "AV6y00rmafdLlkt7Fe-Q",
          "_score": 1,
          "_source": {
            "costs": [
              {
                "cost": 0,
                "endDate": "2017-02-14T00:00:00+00:00",
                "startDate": "2017-02-13T00:00:00+00:00"
              },
              {
                "cost": 3,
                "endDate": "2017-02-17T00:00:00+00:00",
                "startDate": "2017-02-16T00:00:00+00:00"
              }
            ],
            "externalUUID": "/subscriptions/9ee6993f-a036-4118-9eab-c66d9fda1ef3/resourceGroups/vistaragatewayimage/providers/Microsoft.Compute/virtualMachines/VistaraGateway",
            "clientId": 154,
            "region": "eastus",
            "cloudProviderId": 57063
          }
        }
      ]
    }
  }
  </code></pre>
  
  <p>I want to get costs.cost:3.6 as aggregation result,but I am getting result as 5
  how can I filter data even in array?</p>
  
  <pre><code> RangeQueryBuilder startDateRQB = QueryBuilders.rangeQuery("costs.startDate").gte("2017-02-14T00:00:00+00:00");
          RangeQueryBuilder endDateRQB = QueryBuilders.rangeQuery("costs.endDate").lte("2017-02-15T00:00:00+00:00");
          RegexpQueryBuilder deviceNameREQB= QueryBuilders.regexpQuery("region", "useast.*");
          BoolQueryBuilder bQB=QueryBuilders.boolQuery().must(deviceNameREQB).must(startDateRQB).must(endDateRQB);
          BoolQueryBuilder sQB=QueryBuilders.boolQuery().must(startDateRQB).must(endDateRQB);
          SearchResponse response = client.prepareSearch(index).setQuery(bQB).addAggregation(AggregationBuilders.sum("Totalcost").field("costs.cost")).execute().actionGet();
          Sum sum=response.getAggregations().get("Totalcost");
          double cost=sum.getValue();
          System.out.println(cost);
  </code></pre>