2016-03-30 2 views
0

j'ai les données dans la structure suivanteElasticSearch: objets imbriqués total

"mappings" : { 
      "PERSON" : { 
       "properties" : { 
        "ADDRESS" : { 
         "type": "nested", 
         "properties" : { 
         "STREET" : { 
          "type": "nested", 
          "properties" : { 
           "street": { 
            "type": "string" 
           }, 
           "number": { 
           "type": "integer" 
           } 
          } 
         }, 
         "CITY" : { 
          "type": "nested", 
          "properties" : { 
           "name": { 
            "type": "string" 
           }, 
           "size": { 
           "type": "integer" 
           } 
          } 
         } 
         , 
         "country": { 
          "type": "string" 
         } 
         } 
        }, 
        "INFORMATION" : { 
         "type": "nested", 
         "properties" : { 
         "age": { 
          "type": "integer" 
         }, 
         "sex": { 
          "type": "string" 
         } 
         } 
        } 
        "name" : { 
         "type": "string", 
        } 
       } 
      } 
     } 

Je veux agréger objet imbriqué dynamiquement sous forme: [ « type d'objet »: nombre d'enregistrements avec ce type].

par exemple. pour la personne que je veux obtenir quelque chose comme:

[ADRESSE: 1000, INFORMATION: 1230]

et ADRESSE:

[STREET: 200, VILLE: 100]

Est-il possible?

Répondre

1

Vous pouvez d'abord filtrer en fonction PERSONNE ou l'adresse, puis utiliser cardinality aggregation pour obtenir le nombre

+0

quel filtre je dois utiliser sur la personne pour obtenir les adresses et numéros? –