Нужно отсортировать поле с числовыми и буквенно-цифровыми значениями вasticsearch - PullRequest
0 голосов
/ 22 апреля 2019

Я пытаюсь создать отображение для поля, которое нужно будет использовать только для точных совпадений и сортировки.Я не хочу устанавливать первичный тип данных в виде текста, поскольку мне нужно делать только точное совпадение.

{
  "index_patterns": "*",
  "mappings": {
    "doc": {
      "_source": {
        "enabled": true
      },
      "properties": {
        "my_field": {
          "type": "keyword",
          "index": true,
          "fielddata": true
        }
      }
    }
  }
}

Но я получаю следующую ошибку:

{
  "error": {
    "root_cause": [
      {
        "type": "mapper_parsing_exception",
        "reason": "Mapping definition for [my_field] has unsupported parameters:  [fielddata : true]"
      }
    ],
    "type": "mapper_parsing_exception",
    "reason": "Failed to parse mapping [doc]: Mapping definition for [my_field] has unsupported parameters:  [fielddata : true]",
    "caused_by": {
      "type": "mapper_parsing_exception",
      "reason": "Mapping definition for [my_field] has unsupported parameters:  [fielddata : true]"
    }
  },
  "status": 400
}

Проблема в том, что без fielddata сортировка не происходит должным образом.Например, ниже приведен пример asc сортировки:

"90000001" "90000001" "" "" "" "90000008" "9100000"

1 Ответ

0 голосов
/ 22 апреля 2019

Вам не нужно устанавливать fielddata: true для keyword полей.Вы также можете удалить index: true, так как это значение по умолчанию для полей keyword:

Просто так:

{
  "index_patterns": "*",
  "mappings": {
    "doc": {
      "_source": {
        "enabled": true
      },
      "properties": {
        "my_field": {
          "type": "keyword"
        }
      }
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...