# Query to group by multiple fields

**URL:** <https://discuss.elastic.co/t/query-to-group-by-multiple-fields/155986>\
**Category:** Elasticsearch\
**Created:** [November 9, 2018, 6:30am UTC](https://discuss.elastic.co/t/query-to-group-by-multiple-fields/155986 "2018-11-09T06:30:18Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![balumurari1](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/balumurari1/32/39203_2.png) [@balumurari1](https://discuss.elastic.co/u/balumurari1)\
**Post date:** [November 9, 2018, 6:30am UTC](https://discuss.elastic.co/t/query-to-group-by-multiple-fields/155986/1 "2018-11-09T06:30:18Z")

</div>

Hello,  
Lets us assume that i have customers information with city , state.  
Now i want to Group Customer By State, by City.  
can anyone help me to form query with the multiple fields?

if it is only for state, the query is as shown below  
GET customerindex/\_search  
{  
"size": 0,  
"aggs": {  
"group\_by\_state": {  
"terms": {  
"size": 100,  
"field": "state.keyword"  
}  
}  
}  
}

But i want to form query to groupby state and city(multiple fields).

Waiting for your response,  
thanks in advance.

---

<div class="post-metadata">

**Author:** ![balumurari1](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/balumurari1/32/39203_2.png) [@balumurari1](https://discuss.elastic.co/u/balumurari1)\
**Post date:** [November 10, 2018, 1:54pm UTC](https://discuss.elastic.co/t/query-to-group-by-multiple-fields/155986/2 "2018-11-10T13:54:50Z")

</div>

hope this must works, but i am not getting,  
Suppose you want to group by fields `field1` , `field2` and `field3` :

```auto
{
  "aggs": {
    "agg1": {
      "terms": {
        "field": "field1"
      },
      "aggs": {
        "agg2": {
          "terms": {
            "field": "field2"
          },
          "aggs": {
            "agg3": {
              "terms": {
                "field": "field3"
              }
            }
          }          
        }
      }
    }
  }
}

```

Can someone help me please,

---

<div class="post-metadata">

**Author:** ![Jaspreet\_Singh](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/jaspreet_singh/32/58296_2.png) [@Jaspreet\_Singh](https://discuss.elastic.co/u/Jaspreet_Singh)\
**Post date:** [November 12, 2018, 6:09pm UTC](https://discuss.elastic.co/t/query-to-group-by-multiple-fields/155986/3 "2018-11-12T18:09:07Z")

</div>

May be a concrete example will help. Can you show what is your requirement with example?

---

<div class="post-metadata">

**Author:** ![balumurari1](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/balumurari1/32/39203_2.png) [@balumurari1](https://discuss.elastic.co/u/balumurari1)\
**Post date:** [November 16, 2018, 11:47am UTC](https://discuss.elastic.co/t/query-to-group-by-multiple-fields/155986/4 "2018-11-16T11:47:57Z")

</div>

This works fine to group by multiple fields(state,city) and calculate sum of the field "total\_value",

{  
"size":0,  
"aggs":{  
"group\_by\_city":{  
"terms":{  
"field":"city.keyword"  
},  
"aggs":{  
"total\_amount\_city":{  
"sum":{  
"field":"total\_value"  
}  
}  
}  
},  
"group\_by\_state":{  
"terms":{  
"field":"state.keyword"  
},  
"aggs":{  
"total\_amount\_state":{  
"sum":{  
"field":"total\_value"  
}  
}  
}  
}  
}  
}

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/elastic/original/3X/1/a/1ac57faf039f6b580b3f104ef42a2a89e41014de.png) [@system](https://discuss.elastic.co/u/system)\
**Post date:** [December 14, 2018, 11:47am UTC](https://discuss.elastic.co/t/query-to-group-by-multiple-fields/155986/5 "2018-12-14T11:47:57Z")

</div>

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.
