0

我在elasticsearch 6.XX 中导入了一个索引,并创建了两个类型,名称分别为field 和field.keyword。

field.keyword 是可聚合的,而 field 不是。

两者都是字符串类型。

它们之间有什么区别?

4

2 回答 2

2

field.keyword 是文本字段值的未分析值,而 field 包含分析值后的所有标记。

因此,您可以使用 field.keyword 进行聚合,使用字段进行搜索

您可以在此处查看文档。

于 2018-06-25T12:01:35.627 回答
1

字符串类型前段时间已弃用,并且 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

于 2018-06-25T14:03:45.967 回答