es mapping设置之text or keyword ?

前言:

    在es 2.*版本里面是没有这两个字段,只有string字段。

    5.*之后,把string字段设置为了过时字段,引入text,keyword字段

那么今天我们来看一下,es在5.*之后,字符串类型的mapping应该怎么设置 

实践:

准备工作:

es在5.*之后,string类型常用三种,

1.默认的,就是我们不设置mapping直接往里面插入数据 

2.我们设置mapping为text

           

 

3.我们设置mapping为keyword,将2里面的text改为keyword 

4.我们分别往里面添加一个字段 name:张三李四,然后分别查找张三

       添加:     查找:     

结论一:我们发现类型为keyword的无法查找,可以得出keyword不支持分词查询 ,但另外两个支持 

5.我们继续三个索引里面继续添加姓名(添加几个一样的),此时我们要统计姓名相同的人的人数,那么我们必须用到聚合查询 

查询text索引时,直接说不行 

查询xuzhan索引时,要在聚合字段加一个keyword就行

查询key时,可以 

结论二:text类型无法聚合查询 

那么至此我们可以总结出这三个在查询上的优缺点了

 

总结

 分词聚合
keyword不支持支持
text支持不支持
默认支持支持

此时的你是不是在想那以后就直接用默认类型就行了,万能的,但是,但是,但是

  经过上面的测试,可以发现text类型在存储数据的时候会默认进行分词,并生成索引。而keyword存储数据的时候,不会分词建立索引,显然,这样划分数据更加节省内存。为了性能考虑,我们应该仔细斟酌一下 text or keyword ?

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值