Elasticsearch的Keyword数据类型

[[keyword]]
=== Keyword 数据类型

Keyword 字段用来索引结构化的数据, 例如邮箱地址, 主机名, 状态码, 压缩码或者标签.

主要是用于过滤(查找所有 statuspublished 的博客), 排序或者聚合.
Keyword 字段只能被精确查询.

如果你需要索引全文字段, 例如邮件正文或者商品描述. 那么你很可能应该用 [text,text].

下面是一个配置 keyword 字段的例子:

[source,js]

PUT my_index
{
  "mappings": {
    "_doc": {
      "properties": {
        "tags": {
          "type":  "keyword"
        }
      }
    }
  }
}

[[keyword-params]]

keyword 字段的参数

keyword 字段可以接收以下参数:

[horizontal]

[mapping-boost,boost]:

Mapping field-level query time boosting(可以用于提升某个字段的评分权重). 参数值是一个浮点数, 默认 `1.0`.

[doc-values,doc_values]:

是否需要把字段值以 `列式` 存储到磁盘中, 以支持后续的排序聚合以及 scripting. 默认 `true`.

[eager-global-ordinals,eager_global_ordinals]:

是否在刷新的时候优先加载全局排序, 默认 `false`.
一般会在字段频繁的用于 (significant) terms aggregations 的时候开启.

[multi-fields,fields]:

multi-field 字段可以让同一个 string 值用不同的方式索引, 以支持不同目的的查询, 例如一个用于查询,
另一个用于排序聚合.

[ignore-above,ignore_above]:

长度大于这个值的 string 不进行索引.
默认是 `2147483647`, 所有支持所有的值.
但是默认字段自动配置的包含子 `keyword` 的 `Text` 字段的默认值是: `ignore_above: 256`.

[mapping-index,index]:

这个字段是否可以查询, 默认 `true`.

[index-options,index_options]:

用于评分的什么信息应该存储到 index 里.
默认为 `docs`, 但也可以设为 `freqs`, 使得词项出现频率会计入评分.

[norms,norms]:

字段长度是否计入 `评分查询`.
默认 `false`.

[null-value,null_value]:

接受一个 string 值, 当在查询 `null` 值的时候, 可以用这个 string 值来代表.
默认 `null`, 会被当成没有这个字段.

[mapping-store,store]:

字段值的存储与获取是否与 [mapping-source-field,`_source`] 字段分开.
默认 `false`.

[similarity,similarity]:

用什么评分算法或者 _相似度_. 默认 `BM25`.

[normalizer,normalizer]:

在索引之前如何预处理, 默认 `null`, 所有的值都保存原样.

NOTE: 从 2.x 版本导入的 index 不支持 keyword. 往 2.x 导入会把 keyword 降级成 string. 这可以让你把新的 maping 合并
到旧的 mapping中. 使用的比较久的 index 需要在升级到 6.x 的版本之前进行重新创建, 但是降级可以让你有机会重新配置.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值