原文: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. Python---进阶---logging---装饰器打印日志

    #### logging - logging.debug - logging.info - logging.warning - logging.error - logging.critical --- ...

  2. shell练习--PAT题目1001:卡拉兹(Callatz)猜想(失败案例)

    卡拉兹(Callatz)猜想: 对任何一个正整数 n,如果它是偶数,那么把它砍掉一半:如果它是奇数,那么把 ( 砍掉一半.这样一直反复砍下去,最后一定在某一步得到 n=1.卡拉兹在 1950 年的世界 ...

  3. 使用vue 3.0 初始化vue脚手架

    vue-cli3.0安装 如果你事先已经全局安装了旧版本的vue-cli(1.x 或 2.x),你需要先卸载它: npm uninstall vue-cli -g 安装 npm install -g ...

  4. PHP入门培训教程 一个漂亮的PHP验证码

    如何写一个漂亮的PHP验证码?兄弟连PHP培训 小编分享一段代码给大家: <?php class Imagecode{ private $width ; private $height; pri ...

  5. 颜色空间模型 与 Opencv中的HSV模型范围

    颜色空间总结 RGB.HSV.YUV 什么是颜色 Wiki是这样说的:颜色或色彩是通过眼.脑和我们的生活经验所产生的一种对光的视觉效应.嗯,简单点说,颜色就是人对光的一种感觉,由大脑产生的一种感觉.感 ...

  6. sh_05_超市买苹果

    sh_05_超市买苹果 # 1. 定义苹果的单价 price = 8.5 # 2. 挑选苹果 weight = 7.5 # 3. 计算付款金额 money = weight * price # 4. ...

  7. TimeUtils

    public class TimeUtils { public static final int YEAR = 0; public static final int MONTH = 1; public ...

  8. ASYNC_NETWORK_IO等待事件和调优

    测试反应测试数据库整体出现hang的情况,检查对应的等待事件,发现大量的resource_semaphore等待事件, 查看内存占用情况: ​SELECT  *  FROM    sys.dm_exe ...

  9. MySQL主从复制之半同步模式

    MySQL主从复制之半同步模式 MySQL半同步介绍: 一般情况下MySQL默认复制模式为异步,何为异步?简单的说就是主服务器上的I/O threads 将binlog写入二进制日志中就返回给客户端一 ...

  10. 抓包工具之—charles碎言碎语

    一.Charles常见使用场景: 1.Charles是跨平台的抓包工具,支持Windows,mac或Linux平台: 2.获取请求信息.测试接口时,若接口文档中的参数不清楚或没有接口文档时,可以通过抓 ...