I was testing the example given on elasticsearch nested object documentation. In that example, why it returns both records even though i'm querying for values that only matches with 1 record. Please see below: -
Mapping: -
PUT my_index
{
  "mappings": {
    "_doc":{
      "properties": {
        "user": {
          "type": "nested" 
        }
      }
    }
  }
}
PUT my_index/_doc/1
{
 "group" : "fans",
  "user" : [
    {
      "first" : "John",
      "last" :  "Smith"
    },
    {
      "first" : "Alice",
      "last" :  "White"
    }
  ]
}
Query: -
GET my_index/_search
{
  "query": {
    "nested": {
      "path": "user",
      "query": {
        "bool": {
          "must": [
            { "match": { "user.first": "John" }},
            { "match": { "user.last":  "Smith" }}
          ]
        }
      }
    }
  }
}
Actual Output: -
  "hits": {
    "total": 1,
    "max_score": 1.3862944,
    "hits": [
      {
        "_index": "my_index",
        "_type": "_doc",
        "_id": "1",
        "_score": 1.3862944,
        "_source": {
          "group": "fans",
          "user": [
            {
              "first": "John",
              "last": "Smith"
            },
            {
              "first": "Alice",
              "last": "White"
            }
          ]
        }
      }
    ]
  }
}
Desired Output:-
  "hits": {
    "total": 1,
    "max_score": 1.3862944,
    "hits": [
      {
        "_index": "my_index",
        "_type": "_doc",
        "_id": "1",
        "_score": 1.3862944,
        "_source": {
          "group": "fans",
          "user": [
            {
              "first": "John",
              "last": "Smith"
            }
          ]
        }
      }
    ]
  }
}
If something is wrong with my query, then what would be the correct query to get the desired output shown above?
Thank You,
Bhaumik