es2.*用户可忽略该文章。作者不会使用2.*版本的es!!!

当初接触es,最惊讶就是他的版本速度发布太快,这次主要讨论keyword与text的区别

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

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

这两个字段都可以存储字符串使用,但建立索引和搜索的时候是不太一样的

keyword:存储数据时候,不会分词建立索引

text:存储数据时候,会自动分词,并生成索引(这是很智能的,但在有些字段里面是没用的,所以对于有些字段使用text则浪费了空间)。

"zuMaker":{"type":"keyword","index":"false"},
"zuName":{"type":"text","index":"true","boost":"5","analyzer":"ik_max_word","search_analyzer":"ik_max_word"},

现在我建立两个字段:

zuMaker 族制作人 keyword类型

zuName  族名称 text类型

我现在分别往两个字段里面存储数据,zuMaker存储 “张三李四”zuName存储 “墙体钢结构”、

其实在存储的过程中zuMaker 没有分词,只是存储了一个张三李四,而zuName字段存储倒排索引的时候进行了分词 墙体 和 钢结构或者是墙体 钢 结构。

这样在查询的时候,这两个字段的区别就表现出来了

如果精确查找zuName字段

   { "query": { "term": { "zuName": "墙体钢结构" } } }

会出现空数据,表示查不到数据,这是因为墙体钢结构这个值在存储的时候被分词了,倒排索引里面只有‘墙体’,'钢结构',这两个词所以会出现查找为空的记录

这种情况下的分词是存储数据时候的分词,还有一种分词是在你搜索的时候根据你的搜索参数进行分词后再进行搜索的。es提供了许多开箱即用的分析器analyzer,大家也可以去下载被人开发好的分词器然后安装在es的plugins下,然后在声明使用。在zuName这个字段我用的是ik的分词器,是一个大家基本都会用到的中文分词器,git地址为 https://github.com/medcl/elasticsearch-analysis-ik。

如果精确查找zuMakert字段

    { "query": { "term": { "zuMakert": "张三李四" } } }

这时候这条记录是存在的,因为keyword字段不会进行分词。

这查询是精确查询出现的结果,如果你使用分词查询,结果就会一样,但搜索结构的权重是不一样的。具体区别大家自己上机实验。

elasticsearch的keyword与text的区别相关推荐

  1. ElasticSearch 数据类型keyword和text的区别

    原文:https://blog.csdn.net/lionel_fengj/article/details/78367570 [ElasticSearch]数据类型keyword和text的区别 在 ...

  2. ElasticSearch中keyword和text类型区别和模糊查询

    参考文章: https://blog.csdn.net/sfh2018/article/details/118083634 https://blog.csdn.net/w1014074794/arti ...

  3. es keyword和text的区别以及联想词实现方案

    keyword和text的区别 相同 支持模糊查询和精确查询 不同 分词 keyword 不分词 text 分词 聚合查询 keyword 支持 text 不支持 联想词实现方案 内容 基于es的ke ...

  4. 关于全文搜索elasticsearch中matchQuery和termQuery的区别

    如题,本文主要讲关于全文搜索elasticsearch中matchQuery和termQuery的区别,附带一点其它查询用法. 准备工作,下载相关jar包,本文所有jar包列表: apache-log ...

  5. MySQL性能优化之char、varchar、text的区别

    参考:https://dev.mysql.com/doc/refman/8.0/en/string-type-overview.html 在存储字符串时, 可以使用char.varchar或者text ...

  6. varchar和text的区别

    最近有几个同学问我varchar和text有啥别吗,这个问题,以前说真的也没太多的整理,以前遇到text在设计中就是尽可能的拆到另一个表中,保持主表尽量的瘦小,可以让innodb bp缓存更多的数据. ...

  7. MySQL中char,varchar和text的区别

    MySQL中char,varchar和text的区别 java程序中的string类型,在mysql数据表中可以有三种对应的类型:char,varchar和text. char,varchar和tex ...

  8. Elasticsearch 避免term对text字段使用查询

    Elasticsearch 避免term对text字段使用查询 起源: 使用term查询Elasticserach中province字段为北京市的文档.term查询对text字段使用,结果为空. # ...

  9. 【Elasticsearch】文本分析 Text analysis 查询_search中使用分析 (3)

    内置的analyzer fingerprint 指纹分析器实现了一个指纹算法,OpenRefine项目使用该算法来协助聚类. 内部的流程为 转换小写 去掉扩展字符 排序 删除重复字符 删除配置的停止( ...

  10. Elasticsearch中ik_max_word和 ik_smart的区别

    目录 ik_max_word和 ik_smart介绍 最佳实践 ik_max_word和 ik_smart介绍 学习过Solr或Elasticsearch的同学都知道IK分词器,它是一个针对中文的分词 ...

最新文章

  1. 大年初四,你认为在南方过年和在北方过年最大的不同是什么?
  2. JHipster生成微服务架构的应用栈(二)- 认证微服务示例
  3. 动态规划备忘录方法递归方法
  4. 2017年4月19日
  5. Microsoft SQL Server 2005 提供了一些工具来监控数据库
  6. linux的常用的安装命令
  7. Eureka微服务之服务核心动作
  8. Windows 技术篇 - win10系统更新后切换应用一直自动切换为微软输入法解决方法,win10微软输入法卸载方法
  9. 用友U8V10.1软件安装教程
  10. 水晶报表 小代码大作用【BY 阿泰】
  11. 灰色关联度矩阵--基于Matlab
  12. 无符号数与有符号数比较大小
  13. 情感日记:想念从未断绝
  14. redis的键值中出现\xac\xed\x00\x05t\x00\这些的乱码问题
  15. 公益运动App平台开发详情
  16. 网站上面无法显示woff、svg格式字体
  17. 【ONE·Data || 基础数据结构相关练习(一)】
  18. c盘里program files文件夹和program files(x86)文件夹
  19. 如何导入luts预设?
  20. EXCEL 图表相关,如何在一个图表里有2种图形?比如折线+ 柱状图?

热门文章

  1. 《Effective Java》,关于异常
  2. JIRA中设置[描述]字段的默认值
  3. centos mysql
  4. mongodb日志分析工具mtools之mplotqueries
  5. lintcode:Plus One 加一
  6. 面试题:谈谈如何优化MYSQL数据库查询
  7. cocos2d-iphone 3.X 进度条的实现
  8. ORACLE RESOURCE MANAGER(资源管理器)
  9. AJAX 必用的情况(待选........)
  10. Forms 凭票验证