原文:Elasticsearch7.X 入门学习第三课笔记----search api学习(URI Search)

版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。

实现对es中存储的数据进行查询分析,endpoint为_search,查询主要有两种形式:

URI Search:操作简便,方便通过命令行测试,仅包含部分查询语法

     Request Body Search:es提供完备查询语法Query DSL(Domain Specific Language)

URI Search简单介绍

通过url query参数来实现搜索,常用参数如下:

q: 指定查询语句,语法为 Query String Syntax

df: q中不指定字段时默认查询的字段,如果不指定,es会查询所有字段
sort:排序

timeout:指定超时时间,默认不超时

from,size:用于分页


  1. ##指定字段查询和 ?q=2012&df=title一样
  2. GET /movies/_search?q= title:2012&sort=year:asc&from=0&size=10

Request Body Search 简单介绍

将查询语句通过http request body 发送到es,主要包含如下参数:

  • query: 符合Query DSL语法的查询语句
  • from,size
  • timeout
  • sort

URI Search详解

Query String Syntax

  1 泛查询与指定字段查询

q=2012/q= title:2012

泛查询 全字段查询 不字段字段


  1. ## 泛查询 和 指定字段查询
  2. ##指定字段查询和 ?q=2012&df=title一样
  3. GET /movies/_search?q= title:2012&sort=year:asc&from=0&size=10
  4. #泛查询
  5. GET /movies/_search?q=2012&sort=year:asc&from=0&size=10

   2 、term与phrase查询

      alfred way 等效于 alfred OR way

"alfred way" 词语查询,phrase查询要求先后顺序


  1. # 查找美丽心灵, Mind为泛查询
  2. GET /movies/_search?q=title:Beautiful Mind
  3. {
  4. "profile":"true"
  5. }
  6. #使用引号,Phrase查询 同时满足 且位置一样
  7. GET /movies/_search?q=title:"Beautiful Mind"
  8. {
  9. "profile":"true"
  10. }

3、 Group分组指定,使用括号指定匹配的规则

(quick OR brown) AND fox

    status:(active OR pending) title:(full text search)

使用()表示分组 title:(full text search)  相当于 full or text or search


  1. #分组,Bool查询 只要包含 Beautiful或者 Mind就可以
  2. GET /movies/_search?q=title:(Beautiful Mind)
  3. {
  4. "profile":"true"
  5. }
  6. GET /movies/_search?q=title:(Beautiful AND Mind)
  7. {
  8. "profile":"true"
  9. }

 4、布尔操作符

         


  1. ##布尔操作符
  2. ## AND / OR / NOT 或者 && / || / ! 都必须大写
  3. #分组 + -
  4. # + 表示 must AND
  5. #- 表示 not must
  6. GET /movies/_search?q=title:(+Beautiful -Mind)
  7. #phrase查询
  8. GET /movies/_search?q=title:(Beautiful && Mind)
  9. {
  10. "profile":"true"
  11. }
  12. GET /movies/_search?q=title:(Beautiful OR Mind )
  13. {
  14. "profile":"true"
  15. }
  16. #存在Beautiful 且不包含 Mind
  17. GET /movies/_search?q=title:(Beautiful NOT Mind )
  18. {
  19. "profile":"true"
  20. }
  21. # 查找美丽心灵 或的关系,有beautiful或者有mind
  22. GET /movies/_search?q=title:(Beautiful %2B Mind)
  23. {
  24. "profile":"true"
  25. }

 5、范围查询,支持数值和日志

     1)区间写法,闭区间用[],开区间用{}


  1.  age: [1 TO 10]意为 1<=age<=10
  2. age: [1 TO 10}意为 1<=age<10
  3. age: [1 TO ]意为 age>=1
  4.  age: [* TO 10]意为 age<=10

2)算数符号写法

age:>=1

      age:(>=1&&<=10)或者age:(+>=1 +<=10)

6、 通配符查询代表一个字符,*代表0或多个字符       

name:t?m

    name:tom*

通配符匹配执行效率低,且占用较多内存,不建议使用

      如无特殊需求,不要将?/*放在最前面

7、正则表达式

      name:/[mb]oat/
8、模糊匹配 fuzzy query


  1. name:roam~1
  2. 匹配与roam差一个character的词,比如foam roams等

9、近似度查询 proximity search


  1. "fox quick"~5
  2. 以term为单位进行差异比较,比如"quick fox" "quick brown fox"都会被匹配

10 测试实例


  1. # 查找美丽心灵 或的关系,有beautiful或者有mind
  2. GET /movies/_search?q=title:(Beautiful %2B Mind)
  3. {
  4. "profile":"true"
  5. }
  6. #范围查询 ,区间写法 %7D表示}
  7. #闭区间[2002 TO 2018] 开区间{2002 TO 2018}
  8. #组合 {* TO 2018]
  9. #范围查询 ,区间写法
  10. GET /movies/_search?q=title:beautiful AND year:[2002 TO 2018%7D
  11. {
  12. "profile":"true"
  13. }
  14. #下面如果不写 AND 表示or的查询关系
  15. GET /movies/_search?q=title:beautiful year:[2002 TO 2018]
  16. {
  17. "profile":"true"
  18. }
  19. ##运算符号
  20. ## year:(>2012 AND <=2018) year:(>2012) year:(->2012 +<=2018)
  21. GET /movies/_search?q=title:beautiful AND year:(->2012 +<=2018)
  22. {
  23. "profile":"true"
  24. }
  25. #通配符查询 *表示0个或者多个 ?代表1个字符
  26. GET /movies/_search?q=title:b*
  27. {
  28. "profile":"true"
  29. }
  30. #模糊匹配&近似度匹配 ~1 表示 beautifl 值出现一个错别字
  31. GET /movies/_search?q=title:beautifl~1
  32. {
  33. "profile":"true"
  34. }
  35. ##"Lord Rings"~2 表示 "Lord Rings" 之间允许出现两个单词
  36. #~3之间允许出现小于等于3个单词
  37. GET /movies/_search?q=title:"Lord Rings"~3
  38. {
  39. "profile":"true"
  40. }

Elasticsearch7.X 入门学习第三课笔记----search api学习(URI Search)的更多相关文章

  1. Elasticsearch7.X 入门学习第八课笔记-----索引模板和动态模板

    原文:Elasticsearch7.X 入门学习第八课笔记-----索引模板和动态模板 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接: ...

  2. Elasticsearch7.X 入门学习第七课笔记-----Mapping多字段与自定义Analyzer

    原文:Elasticsearch7.X 入门学习第七课笔记-----Mapping多字段与自定义Analyzer 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处 ...

  3. Elasticsearch7.X 入门学习第二课笔记----基本api操作和CRUD

    原文:Elasticsearch7.X 入门学习第二课笔记----基本api操作和CRUD 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链 ...

  4. Elasticsearch7.X 入门学习第五课笔记---- - Mapping设定介绍

    原文:Elasticsearch7.X 入门学习第五课笔记---- - Mapping设定介绍 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本 ...

  5. Elasticsearch7.X 入门学习第四课笔记---- Search API之(Request Body Search 和DSL简介)

    原文:Elasticsearch7.X 入门学习第四课笔记---- Search API之(Request Body Search 和DSL简介) 版权声明:本文为博主原创文章,遵循CC 4.0 BY ...

  6. CodeIgniter框架入门教程——第三课 URL及ajax

    本文转载自:http://www.softeng.cn/?p=74 这节课讲一下CI框架的路由规则,以及如何在CI框架下实现ajax功能. 首先,先介绍CI框架的路由规则,因为CI框架是在PHP的基础 ...

  7. Git速成学习第三课:创建与合并分支

    本来第三课想记录一下远程仓库的创建与克隆0.0但是想了想还是不写了. 这里写一下分支管理中的创建与合并. Git速成学习笔记整理于廖雪峰老师的官网网站:https://www.liaoxuefeng. ...

  8. Python编程学习第三课之编程从Hello World开始

    在搞定了前几节课的情况下,大家是否有一种想要跃跃欲试的赶脚,接下来就是我们开始练手的实战时刻. 每个编程人员入门编程的第一课都是向我们马上要进入的编程世界问好,"你好,世界"英文说 ...

  9. Hbase学习(三)过滤器 java API

    Hbase学习(三)过滤器 HBase 的基本 API,包括增.删.改.查等. 增.删都是相对简单的操作,与传统的 RDBMS 相比,这里的查询操作略显苍白,只能根据特性的行键进行查询(Get)或者根 ...

随机推荐

  1. man du

    DU(1)                      User Commands/用户命令                     DU(1) NAME/名字         du - estimat ...

  2. [洛谷P4107] HEOI2015 兔子与樱花

    问题描述 很久很久之前,森林里住着一群兔子.有一天,兔子们突然决定要去看樱花.兔子们所在森林里的樱花树很特殊.樱花树由n个树枝分叉点组成,编号从0到n-1,这n个分叉点由n-1个树枝连接,我们可以把它 ...

  3. 小程序-登录-token

    1.前端调用wx.login()获取code值 2.前端通过调用wx.getUserInfo获取iv.rawData.signature.encryptedData等加密数据,传递给后端 3.服务器通 ...

  4. linux运维、架构之路-全网备份项目方案

    一.项目需求说明 某公司有多台服务器,里面的数据很重要,如果磁盘坏了,数据就会丢失,所以公司要求把重要服务器数据备份以便出现问题时可以进行恢复,要求:每天晚上00点整在所有服务器上打包备份系统配置文件 ...

  5. 洛谷p3956 棋盘(NOIP2017 t3)

    在noip考场上本来以为只能骗暴力分,没想到最后A了: 本蒟蒻的做法比较简(zhi)单(zhang):记忆化深搜(考场上本来是想打广搜的,但我深搜稳一点就这样打了): 具体:每个点用一个f数组记录当前 ...

  6. Apache编译教程

    手工编译安装Apache, 版本httpd-2.4.29(免费提供安装包,懒人福利:提供安装脚本):https://blog.51cto.com/13728740/2158576 编译安装apache ...

  7. MySQL慢日志分析之pt-query-digest

    http://www.php.cn/mysql-tutorials-357655.html 监控慢日志: pt-query-digest 切割分析慢日志 anemometer 删掉垃圾查询 pt-ki ...

  8. Flask框架【七】—session组件详解

    一.flask session简介 flask中session组件可分为内置的session组件还有第三方flask-session组件,内置的session组件缺点: 功能单一 session是保存 ...

  9. 关于 token

    用户在浏览器做一系列操作,后台服务怎么判断这些操作是来自同一个用户? 1. seesion 用户登录后,后台生成 sessionid 返回给浏览器,浏览器的每次请求带上 sessionid,后台关联 ...

  10. Robot Framework安装部署详细教程

    (转自“义甬君”) Robot Framework安装准备 说实话,在我玩了这么多自动化工具后,感觉Robot Framework所需的环境和安装过程是相对比较繁琐和复杂的.要真正搭建一套可以使用的R ...