默认使用 空格拆分成 多个 子项,并且 每个子项 都会去分词 查询。可以通过 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 的区别的更多相关文章

  1. js正则表达test、exec和match的区别

    test的用法和exec一致,只不过返回值是 true false. 以前用js很少用到js的正则表达式,即使用到了,也是诸如邮件名称之类的判断,网上代码很多,很少有研究,拿来即用. 最近开发遇到一些 ...

  2. 转转转---js正则表达exec与match的区别说明

    正则表达式对象有两个定义方式:: 1.第一种定义: new RegExp(pattern, attributes);如var reg = new RegExp("abc",&quo ...

  3. 正则search与match的区别

    import re # #1.search和match的区别 # pattern = re.compile(r'\d+') # #match从头开始匹配 # m = pattern.match('on ...

  4. es match、match_phrase、query_string和term的区别

    (一)text字段和keyword字段的区别 以下给出一个例子: 首先建立一个索引和类型,引入一个keywork的字段: PUT my_index { "mappings": { ...

  5. ES查询-match VS match_phrase

    我们以一个查询的示例开始,我们在student这个type中存储了一些学生的基本信息,我们分别使用match和match_phrase进行查询. 首先,使用match进行检索,关键字是“He is”: ...

  6. term&match得区别 text&keyword区别

    Text 概念 Text 数据类型被用来索引长文本,比如说电子邮件的主体部分或者一款产品的介绍.这些文本会被分析,在建立索引前会将这些文本进行分词,转化为词的组合,建立索引.允许 ES来检索这些词语. ...

  7. ES PS TS 流的区别

    http://fengqing888.blog.163.com/blog/static/330114162012111805717584/ ES是原始码流,包含视频.音频或数据的连续码流.TS是传输流 ...

  8. JavaScript中正则表达式test()、exec()、match() 方法区别

    1.test test 返回 Boolean,查找对应的字符串中是否存在模式.var str = "1a1b1c";var reg = new RegExp("1.&qu ...

  9. js正则函数中test和match的区别

    test是RegExp的方法,参数是字符串,返回值是boolean类型. match是String的方法,参数是正则表达式,返回值是数组. <script type="text/jav ...

随机推荐

  1. Entity Framework数据库初始化

    public class ApplicationContext : DbContext { public DbSet<User> Users { get; set; } public Ap ...

  2. Oracle非归档模式下脱机数据文件

    正常情况下,要想对数据文件脱机,必须在归档模式下,这是ORACLE自动保护的一种措施,防止在非归档模式下对数据文件脱机,造成数据丢失.如果想在非归档模式下执行数据文件脱机操作,则需要加上“for dr ...

  3. shell脚本实例-安装httpd,安装yum源

    1.安装httpd #!/usr/bin/bash getway=192.168.1.1 ping -c1 www.baidu.com &>/dev/null if [ $? -eq 0 ...

  4. Python 进程的其他方法

    import time import os from multiprocessing import Process def f1(): print("子进程的pid",os.get ...

  5. Python 网络通信协议 tcp udp区别

    网络通信的整个流程 在这一节就给大家讲解,有些同学对网络是既熟悉又陌生,熟悉是因为我们都知道,我们安装一个路由器,拉一个网线,或者用无限路由器,连上网线或者连上wifi就能够上网购物.看片片.吃鸡了, ...

  6. JAVA拼合数组方法

    方法一: package org.ken.array; import java.lang.reflect.Array; import java.util.Arrays; public class Jo ...

  7. 微软Power BI 每月功能更新系列——4月Power BI 新功能学习

    本月Power BI Desktop的更新,除了常规的视觉和数据连接器改进之外,还有两个非常大的功能改进,交互式的报表.问答,用户直接在Desktop可以询问有关的数据问题,面对层出不穷的用户需求,这 ...

  8. React-Native子组件修改父组件的几种方式,兄弟组件状态修改(转载)

    子组件修改父组件的状态,在开发中非常常见,下面列举了几种方式.DeviceEventEmitter可以跨组件,跨页面进行数据传递,还有一些状态的修改.http://www.jianshu.com/p/ ...

  9. 第二十六课 典型问题分析(Bugfix)

    问题1: glibc中的strdup实现如下: 没有对参数s进行空指针判断. 我们的Exception.cpp中应做改进: 在第12行进行判断空指针操作. 问题2: t1在析构时会抛出异常,我们在re ...

  10. 利用scrapy下载图片保存到本地

    1.先声明一下,起始位置已经是将所有的图片链接都能到pipelines.py中 2.创建一个类,继承于ImagesPipeline,因此也就需要导入ImagesPipeline from scrapy ...