В чем разница между «полем» и «полевым ключом»? - PullRequest
0 голосов
/ 25 июня 2018

Я импортировал индекс вasticsearch 6.XX, и были созданы два типа с именем field и field.keyword.

field.keyword является агрегируемым, а field - нет.

Оба имеют строковый тип.

В чем разница между ними?

Ответы [ 2 ]

0 голосов
/ 25 июня 2018

Тип строки был объявлен устаревшим некоторое время назад, и Elasticsearch 6.x не имеет обратной совместимости для их обработки.

Как выполнить миграцию: в большинстве случаев миграция должна быть довольно простой.Поля, которые раньше отображались как анализируемая строка

{
  "foo": {
    "type" "string",
    "index": "analyzed"
  }
}

Теперь необходимо отобразить как текстовое поле:

{
  "foo": {
    "type" "text",
    "index": true
  }
}

И поля, которые раньше отображались как строка not_analyzed

{
  "foo": {
    "type" "string",
    "index": "not_analyzed"
  }
}

Теперь необходимо сопоставить как поле ключевого слова:

{
  "foo": {
    "type" "keyword",
    "index": true
  }
}

См. Это для полного объяснения: https://www.elastic.co/blog/strings-are-dead-long-live-strings

0 голосов
/ 25 июня 2018

field.keyword - это не анализируемое значение значения вашего текстового поля, в то время как поле содержит весь токен после того, как значение было проанализировано.

Таким образом, вы можете использовать field.keyword для вашей агрегации и поле для поиска

Вы можете проверить документацию здесь .

...