2016-08-24 2 views
1

elasticsearchでは、私はその用語のユニークな用語とカウントを取得したいと思います。ユニークな用語のカウントを取得します

 
index: 
doc1: filetype(multivalued): pdf, zip, zip, txt 

expected result: 
pdf: 1 
zip: 2 
txt: 1 

私はこのクエリを作成しましたが、エラーが発生しました。

"aggs": { 
    "uniqueTerms": { 
     "terms": { 
      "field": "filetype" 
     } 
    }, 
    "aggs": { 
     "count": { 
      "cardinality": { 
       "field": "filetype" 
      } 
     } 
    } 
} 

どのようにして結果を得ることができますか?

インデックスマッピング更新:

"file" : { 
    "properties" : { 
     "filetype" : { 
      "type" : "string", 
      "norms" : { 
       "enabled" : false 
      }, 
      "fields" : { 
        "raw" : { 
         "type" : "string", 
         "index" : "not_analyzed", 
         "ignore_above" : 256 
        } 
       } 
      } 
     } 
} 

答えて

0

良いスタート、あなたはほとんどそこにいます。 cardinalityアグリゲーションを1レベル深くネストするだけです。

{ 
    "aggs": { 
    "uniqueTerms": { 
     "terms": { 
     "field": "filetype" 
     }, 
     "aggs": { 
     "count": { 
      "cardinality": { 
      "field": "filetype" 
      } 
     } 
     } 
    } 
    } 
} 
+0

ありがとうございますが、文書数を取得するように見えます。各固有の用語については数えます。 – user3413814

+0

この結果は、pdf:1、zip:1、txt:1 – user3413814

+0

です。申し訳ありませんが、私の回答 – Val

0

私はこのように私のインデックスマッピングを変更:

... 
"file": { 
    "type" : "nested" 
} 
... 

"ファイル" は配列であり、ファイルの情報が含まれています。クエリが正常に働いていた

"aggs": { 
    "1": { 
     "nested": { 
      "path": "file" 
     }, 
     "aggs": { 
      "2": { 
       "terms": { 
        "field": "file.file_type.raw" 
       } 
      } 
     } 
    } 
} 

、その後、私はこのクエリを作りました。

関連する問題