2017-09-29 3 views
0

J'ai le type de mappage suivant.Comment obtenir la propriété de mappage elasticsearch d'origine lors de l'agrégation avec la propriété hash

"clean_url": { 
     "type": "keyword", 
      "fields": { 
       "hash": { 
        "type": "murmur3" 
       } 
      }, 
      "index": "false" 
     } 
    } 

Maintenant, dans ce cas, je peux faire l'agrégation terme de cette façon

"terms": { 
    "field": "clean_url", 
} 

ou

"terms": { 
    "field": "clean_url.hash", 
} 

Dans le premier cas, la clé du godet est clean_url, mais dans la deuxième La clé de cas est clean_url.hash.

Je veux la clé d'origine clean_url dans le cas où je fais l'agrégation sur son hachage. Comment puis je faire ça.

Répondre

1

Vous pouvez le faire:

curl -XGET "http://localhost:9200/your_index/your_type/_search" -H 'Content-Type: application/json' -d' 
{ 
    "size": 0, 
    "aggs": { 
    "per_url": { 
     "terms": { 
     "field": "clean_url.hash" 
     }, 
     "aggs": { 
     "value": { 
      "terms": { 
      "field": "clean_url", 
      "size": 1 
      } 
     } 
     } 
    } 
    } 
}' 

Le "size": 1 de la sous agrégation suppose qu'il n'y a pas de collision de hachage, mais cela peut être modifié.

En fonction de vos données, il devrait être assez rapide.