В Elasticsearch, почему я получаю сообщение об ошибке «Fielddata отключен для текстовых полей по умолчанию» - PullRequest
0 голосов
/ 02 марта 2019

Я пытаюсь написать запрос, чтобы вернуть уникальные города.Мой код:

GET /files/_doc/_search
{
  "size":"0",
  "aggs" : {
    "uniq_cities" : {
      "terms" : { "field" : "cities" }

    }
  }
}

У меня появляется следующее сообщение об ошибке:

Fielddata по умолчанию отключен в текстовых полях.Установите fielddata = true для [городов], чтобы загрузить полевые данные в память путем инвертирования инвертированного индекса.Обратите внимание, что это может использовать значительную память.Вместо этого используйте поле ключевого слова.

Когда я запускаю

GET /files/_doc/_mapping

, я получаю:

"cities" : {
  "type" : "text",
  "fields" : {
    "keyword" : {
      "type" : "keyword",
      "ignore_above" : 256
    }
  }
}

Исходя из вышесказанного, кажется, что я ужеесть поле для ключевых слов.Как исправить сообщение об ошибке?

1 Ответ

0 голосов
/ 02 марта 2019

В сообщении об ошибке говорится: «Полевые данные по умолчанию отключены для текстовых полей», поскольку вы пытаетесь применить агрегирование к текстовому полю cities.Он также имеет подполе keyword с типом данных keyword.Поэтому примените агрегацию к полю cities.keyword, как показано ниже:

GET /files/_doc/_search
{
  "size":"0",
  "aggs" : {
    "uniq_cities" : {
      "terms" : { "field" : "cities.keyword" }

    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...