通配符字段类型

wildcard字段是用于任意子串和正则表达式匹配的keyword字段的变体。

使用wildcard字段当您的内容由“字符序列”而非“文本”组成时。例如,未结构化的日志行和计算机代码。

wildcard字段类型与keyword字段类型索引方式不同。 whereas keyword字段将原始字段值写入索引,wildcard字段类型将字段值分割成长度小于或等于3的子字符串,并将子字符串写入索引。例如,字符串test被分割成字符串t、te、tes、e、es和est。

在搜索时,查询模式的所需子串与索引进行匹配,以生成候选文档,然后根据查询中的模式进行筛选。例如,对于搜索词test,UDB-SX执行对tes AND est的索引搜索。如果搜索词包含少于三个字符,UDB-SX使用一或两个字符长的字符子串。对于每个匹配的文档,如果源值是test,则该文档将在结果中返回。这排除了像nikola tesla felt alternating current was best这样的假阳性值。

一般来说,精确匹配查询(如term或terms查询)在wildcard字段上的表现不如keyword字段,而wildcard、prefix和regexp查询在wildcard字段上的表现更好。

示例

创建一个带有 wildcard 字段的映射:

PUT logs
{
  "mappings" : {
    "properties" : {
      "log_line" : {
        "type" :  "wildcard"
      }
    }
  }
}

参数

以下表格列出了所有可用的 wildcard 字段参数。

参数 描述
doc_values 布尔值,指定字段是否应存储在磁盘上以便用于聚合、排序或脚本。默认值为false。
ignore_above 任何超过此整数值的字符串均不应被索引。默认值为2147483647。
normalizer 用于预处理索引和搜索值的规范化器。默认情况下,不进行规范化,使用原始值。您可以使用lowercase规范化器在字段上执行不区分大小写的匹配。
null_value 一个用于替换null的值。必须与字段类型相同。如果未指定此参数,则当字段的值为null时,将其视为缺失。默认为null。