Number of Nested objects

Hi,
Looking for a way to get the number of nested objects, for querying, sorting etc.
For example:

PUT my-index-000001
{
  "mappings": {
    "properties": {
      "some_id": {"type": "long"},
      "user": {
        "type": "nested",
        "properties": {
          "first": {
            "type": "keyword"
          },
          "last": {
            "type": "keyword"
          }
        }
      }
    }
  }
}

PUT my-index-000001/_doc/1
{
  "some_id": 111,
  "user" : [
    {
      "first" : "John",
      "last" :  "Smith"
    },
    {
      "first" : "Alice",
      "last" :  "White"
    }
  ]
}

How to filter by the number of user (e.g. query fetching all documents with more than XX users).

I was thinking to using a runtime_field but this gives an error:

GET my-index-000001/_search
{
  "runtime_mappings": {
    "num": {
      "type": "long",
      "script": {
        "source": "emit(doc['some_id'].value)"
      }
    },
    "num1": {
      "type": "long",
      "script": {
        "source": "emit(doc['user'].size())" // <- this breaks with "No field found for [user] in mapping"
      }
    }
  }
  ,"fields": [
    "num","num1"
  ]
}

Also tried using aggregations. The following sample gives me the correct doc_count but is there a way to filter by it?

GET my-index-000001/_search
{
  "size": 0,
  "aggs": {
    "aaa": {
      "nested": {
        "path": "user"
      }
    }
  }
}

Would also be nice to know if I can sort the results (e.g. all documents with more than XX and sorted desc by XX).

Thanks.

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