Nested Aggregations : problème avec reverse-nested et script

Bonjour,

Le nombre de résultats retournés lorsque je fais une agrégation via un script n'est pas le bon, alors que j'obtiens le bon résultat avec une agrégation simple.

Voici un exemple :

Avec une agrégation simple :

{
  "size" : 0,
  "query" : {
    "match_all" : { }
  },
  "aggregations" : {
    "locations" : {
      "nested" : {
        "path" : "locations"
      },
      "aggregations" : {
        "reverse-nested" : {
          "reverse_nested": {},
          "aggregations" : {
            "facet-city" : {
              "terms" : {
                "field" : "locations.admin3",
                "size" : 1
              }
            }
          }
        }
      }
    }
  }
}

Réponse :

...
"aggregations": {
  "locations": {
    "doc_count": 1604,
    "reverse-nested": {
      "doc_count": 1311,
      "facet-city": {
        "doc_count_error_upper_bound": 0,
        "sum_other_doc_count": 160,
        "buckets": [
          {
            "key": 6454573,
            "doc_count": 1311
          }
        ]
      }
    }
  }
}
...

Même agrégation avec un script :

{
  "size" : 0,
  "query" : {
    "match_all" : { }
  },
  "aggregations" : {
    "locations" : {
      "nested" : {
        "path" : "locations"
      },
      "aggregations" : {
        "reverse-nested" : {
          "reverse_nested": {},
          "aggregations" : {
            "facet-city" : {
              "terms" : {
                "script" : "doc['locations.admin3'].value",
                "size" : 1
              }
            }
          }
        }
      }
    }
  }
}

Réponse :

...
"aggregations": {
  "locations": {
    "doc_count": 1604,
    "reverse-nested": {
      "doc_count": 1311,
      "facet-city": {
        "doc_count_error_upper_bound": 0,
        "sum_other_doc_count": 99,
        "buckets": [
          {
            "key": "6454573",
            "doc_count": 1212
          }
        ]
      }
    }
  }
}
...

Je ne comprends pas pourquoi, pour la valeur "6454573", j'obtiens 1212 documents au lieu de 1311.

Merci par avance pour votre aide.
Patrice

hello! question pourquoi tu utilise reverse_nested ? reverse nested aurai du sense si tu as dans field quelque chose qui n'est pas dans le nested "locations". une nested simple ferait déjà l'affaire non?

Aurais-tu plus qu'un shard par hasard ?

Avec un seul shard, est-ce que ça donne le bon résultat ?

J'ai peut être mal compris le fonctionnement de reverse_nested.
Je veux compter tous les documents par locations.admin3 (sachant qu'un document a plusieurs locations).

Si je supprime le reverse_nested, j'obtiens 1406 documents, ce qui n'est pas bon.

Sur mon serveur de tests, je n'ai qu'un seul shard.
Sur le serveur de production (avec plusieurs shards), j'obtiens un résultat similaire.