# Count array size in all document

**URL:** <https://discuss.elastic.co/t/count-array-size-in-all-document/269108>\
**Category:** Elasticsearch\
**Created:** [April 2, 2021, 1:37pm UTC](https://discuss.elastic.co/t/count-array-size-in-all-document/269108 "2021-04-02T13:37:47Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![Giovanni\_Di\_Lembo](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/giovanni_di_lembo/32/45714_2.png) [@Giovanni\_Di\_Lembo](https://discuss.elastic.co/u/Giovanni_Di_Lembo)\
**Post date:** [April 2, 2021, 1:37pm UTC](https://discuss.elastic.co/t/count-array-size-in-all-document/269108/1 "2021-04-02T13:37:47Z")

</div>

Hi all and sorry for my poor english  
I have a document like

```auto
{
 
"uuid": "SkDHvXr9ES",
 
"userRole": "9qvfWg3isp",

"devices":[

{"uuid": "hwb258pc7x", "macAddress":["9DGSsuAX4M", "ChypSa8tWx", "fIWrArQyDA", "PQjcvOkHYh",…},

{"uuid": "NpfJtvNYiQ", "macAddress":["Jj3zHklLQF", "pYbovxzI29", "Ic8wgRa_eE", "eLYktPz2Js",…},

{"uuid": "kGLJzGdgft", "macAddress":["XT7BUrUm5q", "OQNpRg7oRk", "9khaKN_3OV", "7wrWWlG51z",…},

{"uuid": "_yUh1Icaex", "macAddress":["xJ1MkTj10D", "j5YJhOQjZF", "EVVN2A4Di8", "2yysRuUTfp",…},

{"uuid": "thDqf3yKJw", "macAddress":["X233a9UN8p", "uGwxy38nWW", "3zAPY_P5QK", "z7pDSzf1Dl",…}

]

 

}

```

and I like to count length of devices array for all documents.

---

<div class="post-metadata">

**Author:** ![dadoonet](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/dadoonet/32/137187_2.png) [@dadoonet](https://discuss.elastic.co/u/dadoonet)\
**Post date:** [April 2, 2021, 1:43pm UTC](https://discuss.elastic.co/t/count-array-size-in-all-document/269108/2 "2021-04-02T13:43:03Z")

</div>

It would be much better to do that at index time and index something like:

```auto
{
  "uuid": "SkDHvXr9ES",
  "userRole": "9qvfWg3isp",
  "devices_size": 5,
  "devices":[
    {"uuid": "hwb258pc7x", "macAddress":["9DGSsuAX4M", "ChypSa8tWx", "fIWrArQyDA", "PQjcvOkHYh",…}, 
    {"uuid": "NpfJtvNYiQ", "macAddress":["Jj3zHklLQF", "pYbovxzI29", "Ic8wgRa_eE", "eLYktPz2Js",…},
    {"uuid": "kGLJzGdgft", "macAddress":["XT7BUrUm5q", "OQNpRg7oRk", "9khaKN_3OV", "7wrWWlG51z",…},
    {"uuid": "_yUh1Icaex", "macAddress":["xJ1MkTj10D", "j5YJhOQjZF", "EVVN2A4Di8", "2yysRuUTfp",…},
    {"uuid": "thDqf3yKJw", "macAddress":["X233a9UN8p", "uGwxy38nWW", "3zAPY_P5QK", "z7pDSzf1Dl",…}
  ]
}

```

Ideally, do that from your application.  
If you can't, you can think of using a [script processor](https://www.elastic.co/guide/en/elasticsearch/reference/7.12/script-processor.html) that will process your documents on the fly to modify the `_source`.

---

<div class="post-metadata">

**Author:** ![Giovanni\_Di\_Lembo](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/giovanni_di_lembo/32/45714_2.png) [@Giovanni\_Di\_Lembo](https://discuss.elastic.co/u/Giovanni_Di_Lembo)\
**Post date:** [April 2, 2021, 2:00pm UTC](https://discuss.elastic.co/t/count-array-size-in-all-document/269108/3 "2021-04-02T14:00:05Z")

</div>

I tried this

```auto
{
  "aggs": {
    "type_count": {
      "value_count": {
        "script": {
          "inline": "params._source.containsKey('devices') && params._source['devices'] != null ? params._source.devices.size() : 0"
        }
      }
    }
  }
}

```

but it return 1 and not 5  
Any idea why?

---

<div class="post-metadata">

**Author:** ![dadoonet](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/dadoonet/32/137187_2.png) [@dadoonet](https://discuss.elastic.co/u/dadoonet)\
**Post date:** [April 2, 2021, 8:51pm UTC](https://discuss.elastic.co/t/count-array-size-in-all-document/269108/5 "2021-04-02T20:51:17Z")

</div>

I think you want a `sum` agg.

But again I'd change the source.

---

<div class="post-metadata">

**Author:** ![Giovanni\_Di\_Lembo](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/giovanni_di_lembo/32/45714_2.png) [@Giovanni\_Di\_Lembo](https://discuss.elastic.co/u/Giovanni_Di_Lembo)\
**Post date:** [April 3, 2021, 4:26pm UTC](https://discuss.elastic.co/t/count-array-size-in-all-document/269108/6 "2021-04-03T16:26:45Z")

</div>

> [@Giovanni\_Di\_Lembo](#):
>
> `params._source`

I found a solution

```auto
POST entities/_search
{
  "query": {
    "match_all": {}
  },
  "script_fields": {
    "number-of-devices": {
      "script": {
        "source": "params['_source']['devices']!=null ? params['_source']['devices'].length:-1"
      }
    } 
  },
  "size": 10000
}

```

for all my fans 😀

---

<div class="post-metadata">

**Author:** ![dadoonet](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/dadoonet/32/137187_2.png) [@dadoonet](https://discuss.elastic.co/u/dadoonet)\
**Post date:** [April 3, 2021, 5:38pm UTC](https://discuss.elastic.co/t/count-array-size-in-all-document/269108/7 "2021-04-03T17:38:42Z")

</div>

But that's not the sum of all. It's "just" per document right?

---

<div class="post-metadata">

**Author:** ![Giovanni\_Di\_Lembo](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/giovanni_di_lembo/32/45714_2.png) [@Giovanni\_Di\_Lembo](https://discuss.elastic.co/u/Giovanni_Di_Lembo)\
**Post date:** [April 3, 2021, 8:07pm UTC](https://discuss.elastic.co/t/count-array-size-in-all-document/269108/8 "2021-04-03T20:07:02Z")

</div>

What I post in title

---

<div class="post-metadata">

**Author:** ![dadoonet](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/dadoonet/32/137187_2.png) [@dadoonet](https://discuss.elastic.co/u/dadoonet)\
**Post date:** [April 3, 2021, 8:49pm UTC](https://discuss.elastic.co/t/count-array-size-in-all-document/269108/9 "2021-04-03T20:49:19Z")

</div>

> [@Giovanni\_Di\_Lembo](#):
>
> and I like to count length of devices array for all documents.

Ok. I thought you wanted the total.

---

<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:** [May 1, 2021, 8:50pm UTC](https://discuss.elastic.co/t/count-array-size-in-all-document/269108/10 "2021-05-01T20:50:01Z")

</div>

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