elasticsearch的keyword与text的区别
es2.*用户可忽略该文章。es 2.*版本里面是没有这两个字段!!!
当初接触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字段不会进行分词。
这查询是精确查询出现的结果,如果你使用分词查询,结果就会一样,但搜索结构的权重是不一样的。具体区别大家自己上级实验。
文章来源:https://my.oschina.net/jsonyang/blog/1204659
elasticsearch的keyword与text的区别的更多相关文章
- ElasticSearch 学习记录之Text keyword 两种基本类型区别
ElasticSearch 系列文章 1 ES 入门之一 安装ElasticSearcha 2 ES 记录之如何创建一个索引映射 3 ElasticSearch 学习记录之Text keyword 两 ...
- JQuery中的html(),text(),val()区别
jQuery中.html()用为读取和修改元素的HTML标签,.text()用来读取或修改元素的纯文本内容,.val()用来读取或修改表单元素的value值. 1.HTML html():取得第一个匹 ...
- jquery中html(), text(),val()区别(zhuan)
https://zhidao.baidu.com/question/307317838.html http://www.cnblogs.com/aqbyygyyga/archive/2011/11/0 ...
- MySQL中char、varchar和text的区别
三者空间占用方面: char:存储定长数据很方便,CHAR字段上的索引效率极高,可以有默认值,比如定义char(10),那么不论你存储的数据是否达到了10个字节,都要占去10个字节的空间(自动用空格填 ...
- char、varchar、nchar、nvarchar、text的区别
char.varchar.nchar.nvarchar.text的区别 1.有var前缀的,表示是实际存储空间是变长的,varchar,nvarchar 所谓定长就是长度固定的,当输入的数据长度没有达 ...
- select标签下option标签里value属性有什么用以及和text的区别
转自:http://blog.csdn.net/summer_sy/article/details/54572398 1:value的用处 <select > <option val ...
- ES 15 - Elasticsearch中的数据类型 (text、keyword、date、geo等)
目录 1 核心数据类型 1.1 字符串类型 - string(不再支持) 1.1.1 文本类型 - text 1.1.2 关键字类型 - keyword 1.2 数字类型 - 8种 1.3 日期类型 ...
- python 中爬虫 content和text的区别
一直在想requests的content和text属性的区别,从print 结果来看是没有任何区别 import requests headers = { "User-Agent" ...
- bs4 string与text的区别
用python写爬虫时,BeautifulSoup真是解析html,快速获取所需数据的神器. 这个美味汤使唤起来,屡试不爽. 在用find()方法找到特定的tag后,想获取里面的文本,可以用.text ...
随机推荐
- React给state赋值的两种写法
如果你看过React的官方文档,就会对怎么给局部state赋值有一定的了解.如下代码: class Test extends React.Component { constructor(props) ...
- P5650 基础字符串练习题
设定'0'权值为1,设定'1'权值为-1 然后就是最大子段和 #include <cstdio> #include <algorithm> #include <cstri ...
- sqlite3-python
官网资料 https://sqlite.org/lang_createtable.html 操作参考: https://www.runoob.com/sqlite/sqlite-insert.html ...
- Luogu P4198 楼房重建 分块 or 线段树
思路:分块 提交:2次(第一次的求解有问题) 题解: 设块长为$T$,我们开$N/T$个单调栈,维护每一块的上升斜率. 修改时暴力重构整个块,$O(T)$ 求解时记录一个最大斜率$lst$,然后块内二 ...
- 小米oj 帮小学生排队(排序+插入)
帮小学生排队 序号:#18难度:有挑战时间限制:1000ms内存限制:10M 描述 用一个数组表示一群正在排队的小学生,每个小学生用一对整数 H, K 来表示:H 表示这个小学生的身高,K 表示这个 ...
- 数据结构实验之栈与队列一:进制转换(SDUT 2131)
题目链接 题解: 特判一下n==0的时候. #include <bits/stdc++.h> using namespace std; int a[1000]; int main() { ...
- Flask-websocket实现聊天功能
群聊无昵称 原生js代码 <!DOCTYPE html> <html lang="en"> <head> <meta charset=&q ...
- php unicode转字符串
<?php /** * @param string $str 需转换字符,这里为单个字符 * @return string */ function get_unicode($str) { $bi ...
- session机制、cookie机制
一.Cookie机制 在web程序中是使用HTTP协议来传输数据的,因为http是无状态协议,一旦数据交换完毕,客户端和服务器端的连接就会关闭,再次交换数据需要建立新的连接,所以无法实现会话跟踪,co ...
- MySQL优化相关参数--先做个记录,以后可能用得到
innodb_io_capacity:可设置的磁盘IO性能参数,越高代表当前mysql的IO性能更好,可用做决策刷脏页速度的参数: innodb_flush_neighbors:刷脏页是否开启连坐机制 ...