zoukankan      html  css  js  c++  java
  • 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 ?

  • 相关阅读:
    MyEclipse的优化
    关于学习Hadoop中未总结的资料
    OSChina 的 Tomcat 配置 server.xml
    Linux 定时任务 Crontab命令 详解
    常用Linux命令收集
    SQL练习 高级子查询
    JAVA设计模式中的单例模式
    Linux课程笔记 Rsync数据同步服务
    Linux课程笔记 SSH介绍
    Linux课程笔记 Raid技术介绍
  • 原文地址:https://www.cnblogs.com/sea520/p/11881037.html
Copyright © 2011-2022 走看看