ElasticSearch中text和keyword类型的区别及text类型添加keyword
2019-07-26 11:06:45 qq_775879106 阅读数 199更多
分类专栏: es
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_36245532/article/details/97374705
在ES的2.X版本中,对于字符类型的数据,我们都使用string类型作为映射,然后再设置它的分词,例如我们新建了一个名为 zk_test的索引,类型为 info,为其中字符类型的name字段设置索引,设置不分词,Kibanan中操作如下

PUT /zk_test/info/_mapping
{
“info”:{
“properties”:{
“name”:{“type”:“string”,“index”:“not_analyzed”},
“age”:{“type”:“integer”}
}
}

但是在ES5.6.8中这样操作,虽然操作会成功,但是ES会提醒你,string类型已经过期,请使用 text或keyword类型设置name字段

text和keyword这两个类型,是在5以后的版本中出现的。官网中,对这两个数据类型,这样描述

Text datatype:
A field to index full-text values, such as the body of an email or the description of a product. These fields are analyzed, that is they are passed through an analyzer to convert the string into a list of individual terms before being indexed. The analysis process allows Elasticsearch to search for individual words within each full text field. Text fields are not used for sorting and seldom used for aggregations (although the significant text aggregation is a notable exception).

If you need to index structured content such as email addresses, hostnames, status codes, or tags, it is likely that you should rather use a keyword field.

Keyword datatype
A field to index structured content such as email addresses, hostnames, status codes, zip codes or tags.
They are typically used for filtering (Find me all blog posts where status is published), for sorting, and for aggregations. Keyword fields are only searchable by their exact value.

If you need to index full text content such as email bodies or product descriptions, it is likely that you should rather use a text field.
官方文档链接:text keyword

原来,es从2.X版本一下子跳到了5.X版本,将string类型变为了过期类型,取而代之的是text和keyword数据类型,一直到现在最新的6以上版本。接下来就看看这两个字段的区别。

 按照官方文档的阐述,text类型的数据被用来索引长文本,例如电子邮件主体部分或者一款产品的介绍,这些文本会被分析,在建立索引文档之前会被分词器进行分词,转化为词组。经过分词机制之后es允许检索到该文本切分而成的词语,但是text类型的数据不能用来过滤、排序和聚合等操作。
keyword类型的数据可以满足电子邮箱地址、主机名、状态码、邮政编码和标签等数据的要求,不进行分词,常常被用来过滤、排序和聚合。
综上,可以发现text类型在存储数据的时候会默认进行分词,并生成索引。而keyword存储数据的时候,不会分词建立索引,显然,这样划分数据更加节省内存。这样,我们映射了某一个字段为keyword类型之后,就不用设置任何有关分词器的事情了,该类型就是默认不分词的文本数据类型。而对于text类型,我们还可以设置它的分词类型,如下:

PUT /zk_test/info/_mapping
{
“info”:{
“properties”:{
“address”:{“type”:“text”,“analyzer”:“standard”}
}
}
}
analyzer 还有中文分词 chinese,英文分词 english 等参数。

另外,我们在像之前2.X版本中一样设置分词使用"index":"not_analyzed"配置时,会有提醒,提示"index"参数只有false和true两个值。

在5以上的版本中,“index”参数用来配置该字段是否可以被用来搜索,true可以通过搜索该字段检索到文档,false为否,配置分词器,用analyzer参数。

text 类型添加keywork

添加前

“userNickName”: {
“type”: “text”
}
PUT添加语句

PUT user_index/user_type/_mapping
{
“properties”: {
“userNickName”: {
“type”: “text”,
“fields”: {
“keyword”: {
“type”: “keyword”,
“ignore_above”: 256
}
}
}
}
}
添加后

“userNickName”: {
“type”: “text”,
“fields”: {
“keyword”: {
“type”: “keyword”,
“ignore_above”: 256
}
}
}

改变es的text的type为keyword相关推荐

  1. ES 字段类型Field type

    1 核心数据类型 通过elasticsearch-head 创建一个索引 index_field 用于功能测试. 1.1 字符串 1.1.1 String 类型 ELasticsearch 5.X之后 ...

  2. es中text和keyword的区别

    text 会分词,然后索引 支持模糊,精确搜索 不支持聚合 keyword 直接索引 支持模糊,精确搜索 支持聚合

  3. html type=text/css,type=text/css 有什么用啊 ?

    用处是告诉浏览器,这段标签内包含的内容是css或text,也就是说如果某种浏览器(特别是wap等手机浏览器械.)不能识别css的,会将代码认为text,从而不显示也不报错. type->类型,这 ...

  4. 【Elasticsearch】 es 6.8 的 type _doc

    文章目录 1.概述 2.小结 3. 移除type 3.1 移除 type 之后 1.概述 在es 6.8版本做了一个实验. 首先创建了一个索引 PUT index-lcc-09 {"ackn ...

  5. Qt文档阅读笔记-Text QML Type官方解析及实例

    目录 官方解析 博主例子 官方解析 Text能够展示纯文本和富文本.举个例子,红色文本以及指定的字体和大小 Text {text: "Hello World!"font.famil ...

  6. input change获取改变之前的值和改变之后的值_input[type=#x27;number#x27;],ios安卓采坑记

    近日,在为公司维护移动端H5代码的过程中,因为平台实现的差异,中间踩了不少坑.借此机会记录一下,也希望大家能有个了解,少走弯路.这一切的一切,都要从一个简单的需求开始说起. 某日,产品.测试反馈,对于 ...

  7. html页面text固定长度,HTML中input type=text和type=password 显示的长度不一样

    springmvc下js控制表单提交(表单提交前检验,提交后获取json返回值) 这个问题我搞了四天,终于搞懂.因为对js很不熟悉.郁闷的是后台代码出错总可以设置断点调试,前端js代码出错只能通过浏览 ...

  8. AGPBI: {“kind“:“error“,“text“:“Program type already present:的解决方法

    问题出现原因:重复依赖了库,去掉一个就行了

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

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

最新文章

  1. 测试RDA5807收音机模块
  2. Ansible详解(二)
  3. Xamarin XAML语言教程构建ControlTemplate控件模板
  4. css根据文字长度实现宽度自适应
  5. 关于fckEditor的功能配置-PHP版
  6. 计算机网络基础必备(三次握手,四次握手,以及HTTP协议相关)
  7. 第四届“强网杯”全国网络安全挑战赛_部分WP
  8. python根据财务指标寻找价值股票
  9. K8S的SDN容器网络解决方案【机制篇】
  10. Git中的pull request真正比较的是什么?
  11. B 站疯传!P8技术大佬分享了20个免费Java课程,白拿不谢!!
  12. linux批量重命名脚本,Linux批量命名文件SH脚本整理
  13. fiddler 查看接口响应时间
  14. JDK 11 下载安装,配置idea
  15. 悉尼大学计算机专业本科2019,2019悉尼大学申请条件
  16. mysql套接字连接_无法通过Remote上的套接字连接到本地MySQL服务器
  17. 影视之观大秦帝国之裂变总结
  18. 计算机键盘按键数量,电脑键盘有一百多个按键,有3个很少人会碰
  19. 年终奖扣税方式1月1日起施行,程序员你还好吗?
  20. pvr.ccz文件转png方法

热门文章

  1. 101121 ~ 101127
  2. VBS基础篇 - 变量(6) - 数组变量
  3. 百度被判歌词搜索侵权
  4. 您的安全设置导致计算机存在安全风险,win10系统iE8提示“当前安全设置会使计算机有风险”的处理教程...
  5. python waitpid_wait和waitpid详解
  6. 1025.在线视频—shell脚本系列讲座(三)千机变—脚本变量
  7. 图像学习之如何理解方向梯度直方图(Histogram Of Gradient)
  8. google地图距离算法_利用google地图api标注图标并且计算两点距离
  9. 步骤:申请google地图api_key,并成为结算用户
  10. Ajax请求接口并将数据返回到页面