elasticsearch中字段的唯一值不正确

时间:2017-01-08 01:43:51

标签: elasticsearch elasticsearch-5

我试图在弹性搜索中从字段中获取唯一值。为了做到这一点,我首先做了下一步:

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
        },..

为什么会这样?我怎样才能看到正确的输出?

1 个答案:

答案 0 :(得分:2)

我找到了解决方案。 我刚刚在字段名称后添加了.keyword

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