es query_string 和 match 的区别
默认使用 空格拆分成 多个 子项,并且 每个子项 都会去分词 查询。可以通过 default_operator 指定 子项之间的关系。默认是 或 。 然后 每个 子项前面可以使用 -+ 指定必须有 或者必须么有。并且 加了修饰符 +- 的 提出单独算。
测试数据:
{
"took": 4523,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"skipped": 0,
"failed": 0
},
"hits": {
"total": 4,
"max_score": 1,
"hits": [
{
"_index": "test01",
"_type": "doc",
"_id": "2",
"_score": 1,
"_source": {
"name": "zhang san"
}
},
{
"_index": "test01",
"_type": "doc",
"_id": "4",
"_score": 1,
"_source": {
"name": "张玉坤"
}
},
{
"_index": "test01",
"_type": "doc",
"_id": "1",
"_score": 1,
"_source": {
"name": "zhang yu kun"
}
},
{
"_index": "test01",
"_type": "doc",
"_id": "3",
"_score": 1,
"_source": {
"name": "li san"
}
}
]
}
}
"query": "zhang san",
"default_operator": "OR" 可以查询 有 zhang 或者 san 的 。
"query": "zhang +san",
"default_operator": "OR" 查询出 必须有san 可以有zhang 的 数据。( 有修饰符的 是提出来优先算的,剩下的在算 或关系 。并且 或中至少要有一个 ),因为只剩一个or 所以这个 zhang 必须有 。所有就是 有 zhang 有 san
"query": "zhang -san",
"default_operator": "OR" 查询 必须没有san ,剩下 or 只有一个zhang 所以这个zhang 必须瞒住。所以就是 必须有zhang ,但是必须没有san
"query": "张三",
"default_operator": "OR" 依旧可以查到张玉坤,所以 是分词的。 分词以后是或 关系。并且+- 的修饰只能出现在词头。不能出现在词中
"query": "张三",
"default_operator": "AND" 这个就什么都查询不到了。说明 default_operator 对分词以后的term 生效。
加一个
PUT /test01/doc/5
{
"name":"kun bo"
}
"query_string": {
"query": "zhang bo -san" 这时候查询出了新添加的那条 ,所以 没有 san , zhang 和 bo 带一个就可以。
"query_string": {
"query": "zhang bo +san" 这按照我的猜想应该是 必须有 san , zhang bo 有一个 。但是 却 可以 zhang bo 都没有。 这个就不知道为啥了,姑且 当做 es 的 一个bugger 吧。
在说说 mach 查询 。mach 查询只是 分词以后查询。相当于 query_string 空格 隔开的 一个子项。
es query_string 和 match 的区别的更多相关文章
- js正则表达test、exec和match的区别
test的用法和exec一致,只不过返回值是 true false. 以前用js很少用到js的正则表达式,即使用到了,也是诸如邮件名称之类的判断,网上代码很多,很少有研究,拿来即用. 最近开发遇到一些 ...
- 转转转---js正则表达exec与match的区别说明
正则表达式对象有两个定义方式:: 1.第一种定义: new RegExp(pattern, attributes);如var reg = new RegExp("abc",&quo ...
- 正则search与match的区别
import re # #1.search和match的区别 # pattern = re.compile(r'\d+') # #match从头开始匹配 # m = pattern.match('on ...
- es match、match_phrase、query_string和term的区别
(一)text字段和keyword字段的区别 以下给出一个例子: 首先建立一个索引和类型,引入一个keywork的字段: PUT my_index { "mappings": { ...
- ES查询-match VS match_phrase
我们以一个查询的示例开始,我们在student这个type中存储了一些学生的基本信息,我们分别使用match和match_phrase进行查询. 首先,使用match进行检索,关键字是“He is”: ...
- term&match得区别 text&keyword区别
Text 概念 Text 数据类型被用来索引长文本,比如说电子邮件的主体部分或者一款产品的介绍.这些文本会被分析,在建立索引前会将这些文本进行分词,转化为词的组合,建立索引.允许 ES来检索这些词语. ...
- ES PS TS 流的区别
http://fengqing888.blog.163.com/blog/static/330114162012111805717584/ ES是原始码流,包含视频.音频或数据的连续码流.TS是传输流 ...
- JavaScript中正则表达式test()、exec()、match() 方法区别
1.test test 返回 Boolean,查找对应的字符串中是否存在模式.var str = "1a1b1c";var reg = new RegExp("1.&qu ...
- js正则函数中test和match的区别
test是RegExp的方法,参数是字符串,返回值是boolean类型. match是String的方法,参数是正则表达式,返回值是数组. <script type="text/jav ...
随机推荐
- Python 基础day3
1.简述bit,byte,kb,MB,GB,TB的关系 1TB=1024GB; 1GB=1024MB ; 1MB=1024kb: 1kb=1024byte ; 1byte=8bit 2.简述as ...
- Linux:http配置
http配置 1.挂载系统:mount /dev/cdrom /mnt/cdrom2.安装:rpm -ivh httpd-2.4.6-88.el7.centos.x86_64.rpm2.启动服务:sy ...
- wxPython的使用--类似画板的界面
# -*- coding: utf-8 -*-import wximport wx.lib.buttonsimport cPickleimport os class PaintWindow(wx.Wi ...
- python 爬虫第三方库
这个列表包含与网页抓取和数据处理的Python库 网络 通用 urllib -网络库(stdlib). requests -网络库. grab – 网络库(基于pycurl). pycurl – 网络 ...
- 大直播时代,P2P才是降低成本的必杀技
在流媒体传输分发领域,CDN和P2P一直是经常被拿来进行对比和讨论的一大热点,虽然不少大型视频企业目前同时使用着CDN和P2P两套分发机制,但相对于CDN,很多人对于P2P技术知之甚少.整体来说,P2 ...
- H5之localStorage,sessionStorage
在以前的时候也听说过一些h5缓存技术,具体也没有去使用过,就在前两三个礼拜我用了localStorage和sessionStorage这两个存储方式, 我使用这些存储技术,也是想减少访问服务器的请求, ...
- 启发式搜索A-Star算法 【寻找 最短路径 算法】【地理几何位置 可利用的情况】
在处理最短路径问题时,有一种启发式算法是我们应该了解的,由于其有着优秀的探索效率在各自现实项目中多有应用,它就是 A-star 算法,或 A* 算法. 个人观点: A* 算法并不保证找到的路径一 ...
- php curl 传输是url中带有空格的处理方法
在crul中,应该用%20代替空格,否则,空格以后的数据将get不到.
- 格式化json
格式化输出JSON var obj = {"args0":{"asynTarget":false,"atomicList":[{" ...
- 20155219--pwd指令的简单实现
pwd指令的简单实现 pwd命令作用 Linux中用** pwd **命令来查看"当前工作目录"的完整路径. 简单得说,每当你在终端进行操作时,你都会有一个当前工作目录. 在不太确 ...