Elasticsearch 7.6.1 数据结构、term、match、wildcard

Elasticsearch 7.6.1 数据类型、term、match、wildcard

简要说明

初期使用 Elasticsearch出现了一些初级问题,包括__term__全匹配查询失败,wildcard like 查询时失败。

问题说明

上述问题均是基于text和keyword类型的差异引起的问题,因此需要先了解Elasticsearch 存储数据时的数据结构,数据类型,再基于需要实现的功能,采取合适的数据类型。

数据类型

  • text/keyword都可理解存储string类型,在2.x版本种,es是存在string类型的,进化过程中演变为了text和keyword。
  • Numeric,存储的则为数值型数据,其中包含long, integer, short, byte, double, float, half_float, scaled_float共8种数值类型,也是够丰富的,mysql种的数值型数据,都可以映射到Numeric当中。
  • Date,时间类型,可以通过预设的3种形式或者自定义的format来存储日期信息。
  • Boolean,布尔类型(true or false)。

分词查询

  1. text类型的数据,存储时会先进行分析,将文本拆分成词,并倒叙索引存储,因此在查询时,全文本匹配会有失效的可能。
  2. keyword类型的数据,保存时不会进行分析。
  3. 7.6.1版本(除较低版本外应该都是)对文本类型的数据结构默认以text为主,keyword为映射类型。在进行全匹配查询时使用字段.keyword,可以避免由于text类型数据被分词引起的问题。

term、match、wildcard

类型查询方式是否分词
term对字符串数据进行全匹配查询 (=)不会分词,对已分词的数据进行查询无法达到预定效果
match对字符串数据进行关键词查询需要分词,对未分词数据进行查询无法达到预定效果
wildcard对字符串数据进行模糊查询 (like)不会分词,对已分词的数据进行查询无法达到预定效果
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值