0

我正在尝试从弹性搜索中的字段中获取唯一值。为了做到这一点,我接下来做了:

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

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

4

1 回答 1

2

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

GET _search
{
"size": 0,
"aggs" : {
    "channels" : {
        "terms" : { "field" : "channelName.keyword" ,
        "size": 1000
        }
    }
}}
于 2017-01-08T01:50:45.183 回答