文章目录

  • 1. query string简介
  • 2. multi field 多字段查询
  • 3. query string 的语法
    • 1. 在query中查询其他特定的字段
    • 2. 通配符
    • 3. 正则表达式
    • 4. 模糊匹配
    • 5. 临近匹配
    • 5. range范围

1. query string简介

GET /_search
{"query": {"query_string" : {"default_field" : "content","query" : "this AND that OR thus"}}
}

query_string查询分析输入内容并在运算符周围拆分文本。每个文本部分彼此独立地进行分析。例如以下查询:
如果不指定default_field的话,则默认会在(当前index,如果制定了index的话)所有可以查询的字段中进行查询

GET /_search
{"query": {"query_string" : {"default_field" : "content","query" : "(new york city) OR (big apple)" }}
}

2. multi field 多字段查询

GET /_search
{"query": {"query_string" : {"fields" : ["content", "name"],"query" : "this AND that"}}
}

等价于


GET /_search
{"query": {"query_string": {"query": "(content:this OR name:this) AND (content:that OR name:that)"}}
}

由于从单个搜索项生成了多个查询,因此使用dis_max带有tie_breaker 的查询自动组合它们。例如(name使用^5符号表示增强5 ):

GET /_search
{"query": {"query_string" : {"fields" : ["content", "name^5"],"query" : "this AND that OR thus","tie_breaker" : 0}}
}

简单通配符也可用于搜索文档的特定内部元素“内”。例如,如果我们有一个city包含多个字段(或带有字段的内部对象)的对象,我们可以自动搜索所有“城市”字段:

GET /_search
{"query": {"query_string" : {"fields" : ["city.*"],"query" : "this AND that OR thus"}}
}

另一种选择是在查询字符串本身中提供通配符字段搜索(正确转义*符号),例如 city.*:something:

GET /_search
{"query": {"query_string" : {"query" : "city.\\*:(this AND that OR thus)"}}
}

由于\(反斜杠)是json字符串中的特殊字符,因此需要对其进行转义,因此上面的两个反斜杠query_string

3. query string 的语法

这个有点类似于高级语义了,在kibana的对应的框中能够使用对应lucene语法,使用的就是query string的语法,也就是query_string对应的query字符串还可以有一些语法来支持更加灵活的查询。

1. 在query中查询其他特定的字段

查找status field中包含 active的doc
status:active

查找title中包含quick 或者 brown的doc
title:(quick OR brown)

查找author字段包括短语"john smith" 的doc
author:“John Smith”

如果field name中有空格的话要用反斜杠包裹
first\ name:Alice

比如 book.title, book.content or book.date 这些field 包含 quick 或者 brown (*号要使用反斜杠转义):
book.*:(quick OR brown)

判断field存在
exists:title

2. 通配符

通配符搜索可以在单个term上运行,使用?替换单个字符,并*替换零个或多个字符:

qu?ck bro*

3. 正则表达式

正则表达式模式可以通过将它们包装在forward-slashes("/")中嵌入查询字符串中:

name:/joh?n(ath[oa]n)/

4. 模糊匹配

quikc~ brwn~ foks~quikc~1 编辑距离是1

5. 临近匹配

proximity searches

"fox quick"~5

这个编辑距离和上面的模糊匹配的不一样,模糊匹配的是针对单个term词的字符级别的编辑距离,这里的编辑距离是word级别的编辑距离。所以词出现的顺序也可以是不同的。

“quick fox” 会被认为比 “quick brown fox” 更相关。

5. range范围

date在2012年内
date:[2012-01-01 TO 2012-12-31]

date在2012之前
date:{* TO 2012-01-01}

数字count在1-5中间
count:[1 TO 5]

数字count在10以上
count:[10 TO *]

不包括5
count:[1 TO 5}

还可以使用下面的语法

age:>10
age:>=10
age:<10
age:<=10
age:(>=10 AND <20)
age:(+>=10 +<20)

07.full text query_string查询相关推荐

  1. JavaWeb黑马旅游网-学习笔记07【旅游线路查询】

    Java后端 学习路线 笔记汇总表[黑马程序员] JavaWeb黑马旅游网-学习笔记01[准备工作] JavaWeb黑马旅游网-学习笔记02[注册功能] JavaWeb黑马旅游网-学习笔记03[登陆和 ...

  2. query_string 查询

    文章目录 示例请求 query_string 的顶级参数 query default_field allow_leading_wildcard analyze_wildcard analyzer au ...

  3. MySQL通讯协议研究3(Text模式查询)

    今天来看Text模式的查询,所谓Text模式,是指sql中只包含文本,没有参数.当然了,这个查询sql可以是select,也可以是update一类的.基础流程如下: 1 2 3 4 5 6 7 8 9 ...

  4. 【Elasticsearch】文本分析 Text analysis 查询_search中使用分析 (3)

    内置的analyzer fingerprint 指纹分析器实现了一个指纹算法,OpenRefine项目使用该算法来协助聚类. 内部的流程为 转换小写 去掉扩展字符 排序 删除重复字符 删除配置的停止( ...

  5. 【SSM分布式架构电商项目-07】后台管理系统查询商品列表以及日志的书写

    查询商品列表 JS EasyUI的datagrid的格式化输出 默认情况下,会直接显示返回的数据,但是有些情况下不能直接显示,如:价格.日期.性别,需要指定formatter函数. 后台实现 Cont ...

  6. mysql字段定义成text类型的严重影响查询性能

    1.使用text字段查询的结果: 2.去掉这个字段后的查询 两者大概相差了0.9秒,严重影响了性能

  7. Elasticsearch:理解 query_string 和 simple_query_string 查询

    针对很多的开发者来说,如果你不是很熟悉 DSL 查询,那么在有些情况下,query_string 及 simple_query_string 变得非常灵活及方便.在今天的文章中,我来比较一下这两种查询 ...

  8. elasticsearch查询

    1.查询方式 有两种查询方式,一种是通过在url中指定查询条件 ,另外一种是通过DSL查询.都是使用GET方法 1.1 分页查询 from 指定从文档的什么位置开始,默认值0 size 指定一次查询返 ...

  9. ElasticSearch6 查询模板的创建使用

    各个版本之间的使用命令还是有些差别,前段时间用6.1.3,不管是使用head还是cerebro,提交时总是碰到各种问题,部分原因就是以前看到的一些资料,版本较早,命令有些差异,所以把一些内容记下来,免 ...

最新文章

  1. Java 设计模式之单例模式
  2. 2022-02-25
  3. android 判断网络是否可用
  4. 送卡神算法力作《代码随想录》!
  5. 关于linux防火墙
  6. zabbix实现mysql数据库的监控
  7. c语言 linker error,[Linker error] undefined reference to `prinf'的问题!
  8. 鼠标关机后仍然发光的实用解决方法
  9. 基于IBM Cognos的高级报表制作技巧
  10. [Windows Server 2008] 404错误设置方法
  11. ubuntu下编译安装linux内核源码
  12. sublime text 编辑器批量删除空白行
  13. 吴裕雄--天生自然 诗经:望海潮·东南形胜
  14. 你的宽带ip地址被100.64了吗?
  15. 本周内外盘行情回顾2022.3.6
  16. 【考研经验】双非二战山东大学计算机技术初试第二经验贴
  17. 系统集成项目管理工程师有什么用?你真的了解吗
  18. npm login报错:npm notice Beginning October 4, 2021, all connections to the npm registry.......
  19. QImage/cv::Mat/HObject的图像格式互相转换,4字节对齐
  20. Flash 与数学:星形线

热门文章

  1. 【Boost】boost库asio详解2——strand与io_service区别
  2. 多线程学习(二)----AfxBeginThread
  3. LXC C API 使用
  4. Linux下通用的Makefile
  5. 【专题介绍】跨越 X 突破,音视频聚力新机遇
  6. Netflix如何通过重构视频Gatekeeper提升内容运营效率?
  7. 探索多媒体开发最新最佳实践(内附资料下载)
  8. 效能优化实践:C/C++单元测试万能插桩工具
  9. 为什么磁盘存储引擎用 b+树来作为索引结构?
  10. SICC大会发布银行、保险用户报告——详解C2B下的服务创新