2016-02-25 4 views
0

Я пытаюсь получить общее количество токенов в документах, соответствующих запросу. Я не определил какое-либо настраиваемое сопоставление, и поле, для которого я хочу получить количество токенов, имеет тип «строка».Как получить общее количество токенов в документах в elasticsearch

Я пробовал следующий запрос, но он дает очень большое число в порядке 10^20, что не является правильным ответом для моего набора данных.

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

Любая идея, как получить правильное количество всех токенов? (Мне не нужны счеты для каждого термина, но общее количество).

ответ

1

Похоже, вы хотите получить cardinality из всех токенов в поле тела.

В таком случае вы можете просто использовать cardinality aggregation, как показано ниже.

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

Для более подробной информации см this official document

+0

Спасибо. Но агрегация «мощности» будет считать разные значения. Я хочу знать общее количество токенов, а не количество уникальных токенов. Есть идеи? – user3760679

+0

이승진, этот вопрос для вас. – user3760679