字段和field.keyword之间的区别

时间:2018-02-19 15:59:31

标签: elasticsearch kibana

如果我将一个包含多个字段的文档添加到Elasticsearch索引,当我在Kibana中查看它时,每次都会得到两次相同的字段。其中一个将被称为

some_field

而另一个将被称为

some_field.keyword

这种行为来自哪里,两者之间有什么区别?

PS:其中一个是可聚合的(不确定是什么意思)而另一个(没有关键字)则不是。

2 个答案:

答案 0 :(得分:5)

更新: 简短的答案就是那种类型:文本被分析,这意味着它在存储时被分解成不同的单词,并允许自由文本搜索该领域的一个或多个单词。 .keyword字段采用相同的输入并保持为一个大字符串,这意味着它可以聚合在一起,并且您可以对其使用通配符搜索。 Aggregatable意味着您可以在elasticsearch中的聚合中使用它,如果您熟悉它,则类似于sql组。在Kibana中,您可能会使用带有聚合的.keyword字段来计算不同的值等。

请查看有关text vs. keyword的文章。

简要说明:由于Elasticsearch 5.0 string类型已被textkeyword类型替换。从那时起,当您没有指定显式映射时,对于带有字符串的简单文档:

{
  "some_field": "string value"
}
将创建

以下动态映射:

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

因此,可以使用some_field字段对some_field.keyword执行全文搜索,以及执行关键字搜索和聚合。

我希望这能回答你的问题。

答案 1 :(得分:1)

查看this问题。你的问题有一些解释。粗略地说some_field被分析并可用于全文搜索。另一方面,some_filed.keyword未被分析,可用于术语查询或聚合。

相关问题