elasticsearch 字段和field.keyword之间的差异,elasticsearch,kibana,elasticsearch,Kibana" /> elasticsearch 字段和field.keyword之间的差异,elasticsearch,kibana,elasticsearch,Kibana" />

elasticsearch 字段和field.keyword之间的差异

elasticsearch 字段和field.keyword之间的差异,elasticsearch,kibana,elasticsearch,Kibana,如果我将一个包含多个字段的文档添加到Elasticsearch索引中,当我在Kibana中查看它时,每次都会得到同一个字段两次。其中一个将被称为 some_field 另一个将被称为 some_field.keyword 这种行为从何而来?两者之间的区别是什么 附言:其中一个是可聚合的(不确定这意味着什么),另一个(没有关键字)不是。里面对你的问题有一些解释。粗略地说,对某些字段进行了分析,可以用于全文搜索。另一方面,某些字段。关键字不进行分析,可用于术语查询或聚合。更新:简短的回答是:文本

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

some_field
另一个将被称为

some_field.keyword
这种行为从何而来?两者之间的区别是什么

附言:其中一个是可聚合的(不确定这意味着什么),另一个(没有关键字)不是。里面对你的问题有一些解释。粗略地说,
对某些字段进行了分析,可以用于全文搜索。另一方面,
某些字段。关键字
不进行分析,可用于术语查询或聚合。

更新:简短的回答是:文本被分析,这意味着它在存储时被分解为不同的单词,并允许对字段中的一个或多个单词进行自由文本搜索。.keyword字段接受相同的输入并保留为一个大字符串,这意味着可以对其进行聚合,并且可以对其使用通配符搜索。可聚合意味着您可以在elasticsearch的聚合中使用它,如果您熟悉它,它类似于sql group by。在Kibana中,您可能会使用带有聚合的.keyword字段来计算不同的值等


请看一下这篇关于你的文章

简而言之:自从Elasticsearch 5.0
string
type被
text
keyword
类型取代以来。此后,当您不指定显式映射时,对于带有字符串的简单文档:

{
  "some_field": "string value"
}
将创建以下动态映射:

{
  "some_field": {
    "type" "text",
    "fields": {
      "keyword": {
        "type": "keyword",
        "ignore_above": 256
      }
    }
  }
}
因此,既可以对
some\u字段
执行全文搜索,也可以使用
some\u字段.关键字
字段执行关键字搜索和聚合


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

链接文章对此进行了解释,但简短的回答应该是这样的:文本经过分析,这意味着它在存储时被分解为不同的单词,并允许对字段中的一个或多个单词进行自由文本搜索。.keyword字段接受相同的输入并保留为一个大字符串,这意味着可以对其进行聚合,并且可以对其使用通配符搜索。可聚合意味着您可以在elasticsearch的聚合中使用它,如果您熟悉它,它类似于sql group by。在Kibana中,您可能会使用带有聚合的.keyword字段来计算不同的值等@Peter,也许您想为我的答案准备编辑?要搜索多个关键字,请使用
“{query”:{“bool”:{“filter”:[{“term”:{“your_field_name.keyword”:“your_value”},{“term”:{“your_field name_2.keyword”:“your_value_2”}]}
对于单个关键字,您可能会丢失
[]
.Sources:}