2016-02-25 1 views
0

J'essaie d'obtenir le nombre total de jetons dans les documents correspondant à une requête. Je n'ai défini aucun mappage personnalisé et le champ pour lequel je veux obtenir le nombre de jetons est de type 'chaîne'.comment obtenir le nombre total de jetons dans les documents dans elasticsearch

J'ai essayé la requête suivante, mais elle donne un très grand nombre de l'ordre de 10^20, ce qui n'est pas la bonne réponse pour mon jeu de données.

curl -XPOST 'localhost:9200/nodename/comment/_search?pretty' -d ' 
{ 
    "query": { 
     "match_all": {} 
    }, 
    "aggs": { 
     "tk_count": { 
     "sum": { 
      "script": "_index[\"body\"].sumttf()" 
     } 
     } 
    }, 
    "size": 0 
} 

Une idée pour obtenir le nombre correct de tous les jetons? (Je n'ai pas besoin de comptes pour chaque terme, mais le nombre total).

Répondre

1

On dirait que vous voulez récupérer cardinality des jetons totaux dans le corps de la carrosserie.

Dans ce cas, vous pouvez simplement utiliser cardinality aggregation comme ci-dessous.

curl -XPOST 'localhost:9200/nodename/comment/_search?pretty' -d ' 
{ 
    "query": { 
     "match_all": {} 
    }, 
    "aggs": { 
     "tk_count": { 
      "cardinality" : { 
       "field" : "body" 
      } 
     } 
    }, 
    "size": 0 
} 

Pour plus d'informations, voir this official document

+0

Merci. Mais l'agrégation de "cardinalité" comptera les valeurs distinctes. Je veux connaître le nombre total de jetons, pas le nombre de jetons uniques. Une idée? – user3760679

+0

이승진, cette question est pour vous. – user3760679