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


(Patrice Pichereau) #1

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


(Camilo Sierra) #2

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?


(David Pilato) #3

Aurais-tu plus qu'un shard par hasard ?

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


(Patrice Pichereau) #4

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.


(Patrice Pichereau) #5

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.


(system) #6