elasticsearch - field 和 field.keyword 的区别

标签 elasticsearch kibana

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

some_field

另一个将被调用

some_field.keyword

这种行为从何而来,两者有什么区别?

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

最佳答案

更新: 一个简短的答案是这样的类型:文本被分析,这意味着它在存储时被分解成不同的词,并允许自由文本搜索字段中的一个或多个单词。 .keyword 字段采用相同的输入并保留为一个大字符串,这意味着它可以聚合,并且您可以对其使用通配符搜索。可聚合意味着您可以在 elasticsearch 的聚合中使用它,如果您熟悉它,它类似于 sql group by。在 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
      }
    }
  }
}

As a consequence, it will both be possible to perform full-text search on some_field, and keyword search and aggregations using the some_field.keyword field.

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

关于elasticsearch - field 和 field.keyword 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48869795/

相关文章:

elasticsearch - 和+或使用 Elasticsearch REST API进行查询

ajax - Web应用程序身份验证并保护单独的Web API(elasticsearch和kibana)

elasticsearch - X轴上的Elasticsearch日期格式

Elasticsearch:可以处理聚合结果吗?

spring - 删除 Elasticsearch 响应中doc_count为零的存储桶

elasticsearch - 减去两个度量结果 Elasticsearch

elasticsearch - kibana 将术语总结为一个完整的字符串

string - 什么是多 token 字符串?

node.js - 尝试使用mongosastic Elasticsearch 到Node app时出现mapper_parsing_exception

elasticsearch - Elasticsearch 聚合 : "aggs" query- "field" vs "script"- which is faster?