2017-01-08 8 views
0

私は弾性検索のフィールドから一意の値を取得しようとしています。問題は、その元のエントリでありelasticsearchのフィールドの一意の値が正しくない

... 
"buckets": [ 
     { 
      "key": "tv", 
      "doc_count": 4582 
     }, 
     { 
      "key": "baby", 
      "doc_count": 2424 
     }, 
     { 
      "key": "24", 
      "doc_count": 1547 
     }, 
     { 
      "key": "channel", 
      "doc_count": 1192 
     },.. 

GET _search 
{ 
"size": 0, 
"aggs" : { 
    "channels" : { 
     "terms" : { "field" : "channelName" , 
     "size": 1000 
     } 
    } 
}} 

そして、次の応答を見た:その後

PUT tv-programs/_mapping/text?update_all_types 
{ 
    "properties": { 
    "channelName": { 
     "type":  "text", 
     "fielddata": true 
    } 
    } 
} 

を私はこれを実行する:私は次のやったすべての最初のことを行うため4つの異なるレコードではありません。正しい出力は次のようにしてください:

"buckets": [ 
     { 
      "key": "baby tv", 
      "doc_count": 4582 
     } 
     { 
      "key": "channel 24", 
      "doc_count": 1547 
     },.. 

なぜそれが起こっていますか?正しい出力を確認するにはどうしたらいいですか?

答えて

2

解決策が見つかりました。 フィールド名の後に.keywordを追加したばかりです:

GET _search 
{ 
"size": 0, 
"aggs" : { 
    "channels" : { 
     "terms" : { "field" : "channelName.keyword" , 
     "size": 1000 
     } 
    } 
}} 
関連する問題