“ field”和“ field.keyword”有什么区别?

时间:2018-06-25 10:23:39

标签: elasticsearch elasticsearch-6

我已经将索引导入了elasticsearch 6.X.X,并且创建了两种类型,名称分别为field和field.keyword。

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

两者都是字符串类型。

它们之间有什么区别?

2 个答案:

答案 0 :(得分:2)

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

因此,您可以使用field.keyword进行汇总,并使用field进行搜索

您可以查看文档here

答案 1 :(得分: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