2017-01-08 3 views
0

탄성 찾기의 필드에서 고유 값을 얻으려고합니다.elasticsearch에서 필드의 고유 값이 올바르지 않습니다.

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

나는이 실행 된 이후 :

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

을 그리고 다음 응답을 보았다 모두의 첫 번째 일을 위해 내가 다음을했다

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

문제는 원래의 항목에있다 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 
     } 
    } 
}}