ElasticSearch 5.0以后,string类型有重大变更,移除了string类型,

string字段被拆分成两种新的数据类型: text用于全文搜索的,而keyword用于关键词搜索。

1、ES 关于text和keyword两种类型

ElasticSearch字符串将默认被同时映射成text和keyword类型,将会自动创建下面的动态映射。

通过 GET /dist_test/_mapping/field/weixin_number 命令查看 weixin_number 字段数据类型,可以看到 mapping 下除了 text 还有 keyword。两者有什么区别呢?

{"dist_test" : {"mappings" : {"weixin" : {"weixin_number" : {"full_name" : "weixin_number","mapping" : {"weixin_number" : {"type" : "text","fields" : {"keyword" : {"type" : "keyword","ignore_above" : 256}}}}}}}}
}

1.1 text:

  1. 会分词,然后进行索引
  2. 支持模糊、精确查询
  3. 不支持聚合
  4. 分词器默认standard ,对于中文来说就是按字分词
  5. 支持fields属性,可以在fields中添加keyword子类型,以实现精确检索

1.2 keyword:

  1. 不进行分词,直接索引
  2. 支持模糊、精确查询
  3. 支持聚合
  4. 支持按字数建立索引,以便节约索引空间
  5. 看下text分词规律。

1.2.1、纯小写字符串

GET /dist_test/_analyze
{"field": "weixin_number","text": "vicky1176320626"
}

1.2.2、包含大写字母字符串会全部转换为小写。

GET /dist_test/_analyze
{"field": "weixin_number","text": "XP3412"
}

1.2.3、包含特殊符号,如空格、-,则会分词为多个字符串。

GET /dist_test/_analyze
{"field": "weixin_number","text": "AAAA-95533"
}

这也是某些情况下,term 查询后查询不到数据的原因。解决方案也很简单,使用 keyword 精确查询即可。

如例:针对Text类型的数据,要使用term查询

{"from": 0,"size": 10,"query": {"bool": {"must": [{"term": {"city.keyword": {"value": "湖南省长沙市","boost": 1}}}],"adjust_pure_negative": true,"boost": 1}}
}

ES 关于text和keyword两种类型数据搜索区别相关推荐

  1. Spring 让 LOB 数据操作变得简单易行,LOB 代表大对象数据,包括 BLOB 和 CLOB 两种类型

    http://www.ibm.com/developerworks/cn/java/j-lo-spring-lob/index.html 本文讲解了在 Spring 中处理 LOB 数据的原理和方法, ...

  2. java变量的两种类型

    首先要明白为什么需要数据类型? 数据类型在计算机语言中,是对内存位置的一个抽象的表达方式.不同类型的变量在内存中分配的字节数不同,同时存储方式也是不同的.所以给变量赋值前需要先确定变量的类型,即确定了 ...

  3. (发现)问题才是推动创新的动力系列:两种类型硬币(均匀和非均匀)能否用第一次得正面朝上的概率推断“第一第二次依次获得正面反面情况”的概率?

    两种类型硬币(均匀和非均匀)能否用第一次得正概率推断,第一第二次依次获得正反概率? 2种硬币 均匀的 COIN1  正反概率(正0.5  反0.5) 非均匀的COIN2 (正0.9  反0.1) 问题 ...

  4. 设计一个处理两种类型地址的地址簿程序_编译器设计-符号表-中间代码生成

    编译器设计-符号表-中间代码生成 Compiler Design - Symbol Table Compiler - Intermediate Code Generation 一.Compiler D ...

  5. M.2 固态硬盘的两种类型:SATA 和 NVMe 的区别?

    参考 https://www.kingston.com.cn/cn/solutions/pc-performance/two-types-m2-vs-ssd 前言 在存储技术领域,当我们讨论 M.2 ...

  6. 用implicit和explicit打通两种类型

    我们知道,在c#中,如果两个类型没有继承关系 ,是不能相互值赋的,但有两个关键字implicit和explicit,可以让 Date date = DateTime.Now这样的赋值成为可能. 注:c ...

  7. java类型转换答案,在java中支持两种类型的类型转换,自动类型转换和强制类型转换。父类转化为子类需要强制转换。...

    在java中支持两种类型的类型转换,自动类型转换和强制类型转换.父类转化为子类需要强制转换. 更多相关问题 计算机病毒通过()传染扩散得极快,危害最大. 当一个现象的数量由小变大,另一个现象的数量相反 ...

  8. 计算机不属于发明保护客体,如何判断两种类型的计算机程序发明能否成为专利保护客体?...

    如何判断两种类型的计算机程序发明能否成为专利保护客体?计算机程序类的发明可以根据处理和控制对象的不同划分为两种类型:控制和处理计算机外部对象的类型,以及控制和处理计算机内部对象的类型. 由于两者在技术 ...

  9. matlab将txt数据分类,MATLAB读取txt文件,txt里面有字符串和数值两种类型

    MATLAB读取txt文件,txt里面有字符串和数值两种类型 mip版  关注:96  答案:4  悬赏:30 解决时间 2021-01-29 08:48 已解决 2021-01-28 15:04 M ...

  10. 手机号段对应地区编码_什么是编码器?了解两种类型的编码器

    编码器提供反馈,以精确控制速度和位置.转子角位置是通过两个相差90度的方波和每转一圈发生的可选索引脉冲给出的.有多种技术可获得这些结果. 两种类型的编码器:光学和磁编码器 光学编码器 这种类型的编码器 ...

最新文章

  1. 查看dev下设备名的含义
  2. mysqladmin mysql,mysql,mysqladmin,mysqld之间的区别
  3. VTK:图像亮度用法实战
  4. 泛型类的定义与实例化 c#
  5. uniapp 表单提交图片跟其他填写数据_记录第一次实现表单数据提交到数据库
  6. 用Chntpw cd disk 或老毛桃清除WIN7和2008密码
  7. linux 执行文件命令
  8. 刚体的转动惯量的c语言题目,刚体的转动惯量题.doc
  9. word/excel 通配符
  10. LWN: 利用 DAMON 进行内存主动回收!
  11. java read dxf xdata_DXF格式文件数据提取
  12. 电脑上的各个组合及功能键作用
  13. iPerf 3.13 的交叉编译,移植,使用
  14. 智能优化算法之蚁群算法(ACO)
  15. 快手2020实习生招聘---测试类--笔试真题
  16. Tableau 中国教育水平发展指标历史数据(六)识字率
  17. verilog学习五点经验分享 http://bbs.21ic.com/icview-402231-1-1.html
  18. ieee latex 双栏_IEEE 投稿Latex设置
  19. 实用计算机理论基础知识试题及答案,计算机基础知识试题及答案(1)
  20. 如何下载jupyter notebook

热门文章

  1. 威漫哨兵机器人_曾经秒杀X战警的哨兵机器人,在漫威漫画原著里更让人头疼!...
  2. ubuntu18.04双系统卸载并重装
  3. 一元三次方程求解matlab_用Matlab ode45函数解常微分方程
  4. 推荐系统之itemCF
  5. 为什么webview中网页字体大小跟样式设置的不同?
  6. ⅰcp经济模型_新经济地理学基本模型及其扩展综述_刘亚军
  7. APP如何上架App Store?
  8. 计算机数学基础:斜率与截距、导数、权重的关系
  9. git创建版本库并提交文件
  10. flutter之出现 List is not a subtype of type 问题