Неверные уникальные значения из поля в 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
        },..

Почему это происходит? Как я могу увидеть правильный вывод?


person kkost    schedule 08.01.2017    source источник


Ответы (1)


Я нашел решение. Я просто добавил .keyword после имени поля:

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