Restful API查询

  • 准备测试数据
  • 1、match_all
  • 2、match
  • 3、bool
  • 4、term
  • 5、range
  • 6、exists
  • 7、filter
  • 8、浅分页
  • 9、深分页

准备测试数据

POST /school/student/_bulk
{ "index": { "_id": 1 }}
{ "name" : "liubei", "age" : 20 , "sex": "boy", "birth": "1996-01-02" , "about": "i like diaocan he girl" }
{ "index": { "_id": 2 }}
{ "name" : "guanyu", "age" : 21 , "sex": "boy", "birth": "1995-01-02" , "about": "i like diaocan" }
{ "index": { "_id": 3 }}
{ "name" : "zhangfei", "age" : 18 , "sex": "boy", "birth": "1998-01-02" , "about": "i like travel" }
{ "index": { "_id": 4 }}
{ "name" : "diaocan", "age" : 20 , "sex": "girl", "birth": "1996-01-02" , "about": "i like travel and sport" }
{ "index": { "_id": 5 }}
{ "name" : "panjinlian", "age" : 25 , "sex": "girl", "birth": "1991-01-02" , "about": "i like travel and wusong" }
{ "index": { "_id": 6 }}
{ "name" : "caocao", "age" : 30 , "sex": "boy", "birth": "1988-01-02" , "about": "i like xiaoqiao" }
{ "index": { "_id": 7 }}
{ "name" : "zhaoyun", "age" : 31 , "sex": "boy", "birth": "1997-01-02" , "about": "i like travel and music" }
{ "index": { "_id": 8 }}
{ "name" : "xiaoqiao", "age" : 18 , "sex": "girl", "birth": "1998-01-02" , "about": "i like caocao" }
{ "index": { "_id": 9 }}
{ "name" : "daqiao", "age" : 20 , "sex": "girl", "birth": "1996-01-02" , "about": "i like travel and history" }
{ "index": { "_id": 10 }}
{ "name" : "luban", "age" : 21 , "sex": "girl", "birth": "1996-01-02" , "about": "i like travel and history" }
{ "index": { "_id": 11 }}
{ "name" : "guiguzi", "age" : 29 , "sex": "girl", "birth": "1996-01-02" , "about": "i like football" }
{ "index": { "_id": 12 }}
{ "name" : "zhuangzhou", "age" : 40 , "sex": "girl", "birth": "1996-01-02" , "about": "i like history" }
  • ES中两种查询方式

    • GET:指定documentId来查询

      • 只能查询这一条documentId的数据
      • 类似于Hbase中的get
    • GET:指定_search,通过构建查询器Query来做复杂的条件查询
      • 类似于Hbase中scan

1、match_all

  • 查询:匹配所有查询

    • 默认只显示10条
GET /school/student/_search?pretty
{"query": {"match_all": {}}
}
  • 指定条数
GET /school/student/_search?pretty
{"query": {"match_all": {}},"size":12
}

2、match

  • 模糊匹配查询:ES中默认的排序规则:按照评分降序排序
GET /school/student/_search?pretty
{"query": {"match": {"about": "travel"}}
}
​
{"took": 56,"timed_out": false,"_shards": {"total": 5,"successful": 5,"skipped": 0,"failed": 0},"hits": {"total": 6,"max_score": 0.8538154,                 --所有符合条件的数据中最高评分"hits": [{"_index": "school","_type": "student","_id": "4","_score": 0.8538154,"_source": {"name": "diaocan","age": 20,"sex": "girl","birth": "1996-01-02","about": "i like travel and sport"}},{"_index": "school","_type": "student","_id": "7","_score": 0.6931472,"_source": {"name": "zhaoyun","age": 31,"sex": "boy","birth": "1997-01-02","about": "i like travel and music"}},{"_index": "school","_type": "student","_id": "3","_score": 0.6931472,"_source": {"name": "zhangfei","age": 18,"sex": "boy","birth": "1998-01-02","about": "i like travel"}},{"_index": "school","_type": "student","_id": "5","_score": 0.5000329,"_source": {"name": "panjinlian","age": 25,"sex": "girl","birth": "1991-01-02","about": "i like travel and wusong"}},{"_index": "school","_type": "student","_id": "9","_score": 0.5000329,"_source": {"name": "daqiao","age": 20,"sex": "girl","birth": "1996-01-02","about": "i like travel and history"}},{"_index": "school","_type": "student","_id": "10","_score": 0.5000329,"_source": {"name": "luban","age": 21,"sex": "girl","birth": "1996-01-02","about": "i like travel and history"}}]}
}

3、bool

  • 多条件查询:条件之间的逻辑关系

    • must:必须满足的条件
    • must_not:必须不能满足的条件
    • should:应该,可有可无,或者
  • 测试
  • 查询所有喜欢旅游但性别不是男性的
GET /school/student/_search?pretty
{"query": {"bool": {"must": { "match": {"about": "travel"}},"must_not": {"match": {"sex": "boy"}}}}
}
  • 查询所有喜欢旅游的,如果有男的也可以
GET /school/student/_search?pretty
{"query": {"bool": {"must": { "match": {"about": "travel"}},"should": {"match": {"sex": "boy"}}         }}
}

4、term

  • 词条查询【重要】,精准匹配
GET /school/student/_search?pretty
{"query": {"bool": {"must": { "term": {"about": "travel"}},"should": {"term": {"sex": "boy"}}         }}
}
  • terms:多个词匹配
GET /school/student/_search?pretty
{"query": {"bool": {"must": { "terms": {"about": ["travel","history"]}}          }}
}
about": ["travel","history"]:值是或者关系

5、range

  • 范围查询
GET /school/student/_search?pretty
{"query": {"range": {"age": {"gt":20,"lte":25}}}
}
  • bool多条件嵌套
GET /school/student/_search?pretty
{"query": {"bool": {"must": [{"term": {"about": {"value": "travel"}}},{"range": {"age": {"gte": 20,"lte": 30}}}]}}
}

6、exists

  • 判断是否存在
GET /school/student/_search?pretty
{"query": {"exists": {"field": "age"  }}
}

7、filter

  • 过滤查询
GET /school/student/_search?pretty
{"query": {"bool": {"must": {"match": {"about": "travel"}},     "filter": [{"term":{"age": 20}}]}}
}

8、浅分页

  • 类似于limit M,N

    • M:从第几条开始,M从0开始计数
    • N:显示几条
  • 需要给定的条件
    • 起始位置:从0开始
    • 页面大小
  • 分页查询
GET /school/_search?pretty
{"from" : 0 , "size" : 3
}
​
GET /school/_search?pretty
{"from" : 3 , "size" : 3
}
  • 从0开始一直扫描到起始位置,然后显示size的数据
  • 每次只返回一页
  • 工作中不推荐使用浅分页
  • 原理是对每个分片都查询N条,然后再合并根据评分排序取最后的N条
  • 如果你的from的位置比较大,性能非常差
    • from:10000 size:10
    • index
      • shard0:from:10000 size:10
      • shard1:from:10000 size:10
      • shard2:from:10000 size:10
      • shard3:from:10000 size:10
      • shard4:from:10000 size:10
      • |
      • 返回50条,根据评分排序,取前10条

9、深分页

  • 自动翻页
  • 不建议将结果在内存中缓存太长时间
  • 初始化:将需要的数据从文件中放到内存中
GET school/_search?scroll=3m
{"query": {"match_all": {}},"size": 3
}
​scroll=3m : 将查询的结果在内存中缓存3分钟
  • 分页查询:从内存中查询,指定缓存的id
GET /_search/scroll
{"scroll" : "1m","scroll_id" : "DnF1ZXJ5VGhlbkZldGNoBQAAAAAAAAOOFjE2Z2ZVZ1B1Um9TMjhmeE1WVHI5S1EAAAAAAAADhhZsS2w3bUk0YlJDT3o4eGlJRjlkN3B3AAAAAAAAA48WMTZnZlVnUHVSb1MyOGZ4TVZUcjlLUQAAAAAAAAORFjE2Z2ZVZ1B1Um9TMjhmeE1WVHI5S1EAAAAAAAADkBYxNmdmVWdQdVJvUzI4ZnhNVlRyOUtR"
}
  • 不建议处理特别大的数据量,建议通过范围来控制页面的数据,做数据过滤

es--Restful API查询相关推荐

  1. es java api 查询_es聚合查询javaapi

    查询节气详情 package net.apishop.www.controller; import import import import import import import import i ...

  2. Restful API注解之@PathVariable和@JsonView详解

    **对于restful API的使用可以查看我之前的文章SpringMVC开发restful API查询请求 本文将在restful API的基础上介绍@PathVariable和@JsonView注 ...

  3. java查询所有数据_elasticsearch查询所有数据restful api以及java代码实现

    原文:http://blog.java1234.com/blog/articles/366.html restful api实现如下: 返回所有数据: Java代码实现: 运行: ERROR Stat ...

  4. java多条件组合查询6_elasticsearch组合多条件查询实现restful api以及java代码实现

    elasticsearch组合多条件查询实现restful api以及java代码实现 实际开发中,基本都是组合多条件查询. elasticsearch提供bool来实现这种需求: 主要参数: mus ...

  5. java查询elasticsearch_elasticsearch查询所有数据restful api以及java代码实现

    elasticsearch查询所有数据restful api以及java代码实现 restful api实现如下: 返回所有数据: Java代码实现:/** * 查询所有 * @throws Exce ...

  6. ElasticSearch查询所有数据restful api以及java代码实现

    elasticsearch查询所有数据restful api以及java代码实现 restful api实现如下: get http://192.168.1.111:9200/film/dongzuo ...

  7. java分页显示12345_elasticsearch分页查询数据restful api以及java代码实现

    elasticsearch分页查询数据restful api以及java代码实现 restful api实现如下: { "from": 0, "size": 2 ...

  8. Elasticsearch入常用RESTful API总结

    RESTful API HTTP动词介绍 对于资源的具体操作类型,由HTTP动词表示. 常用的HTTP动词有下面五个(括号里是对应的SQL命令). GET(SELECT):从服务器取出资源(一项或多项 ...

  9. 一文讲解Elasticsearch java restful api 跨版本兼容解决方案

    需求来源 之前的文章elasticsearch&kibana从6.0升级到7.9完整过程记录已经已经介绍了该需求的来源,也已经将elasticsearch的server端从6.0.0升级到了7 ...

最新文章

  1. thttpd+php 不加载php.ini 问题
  2. HighNewTech:低代码(0代码/无代码,无需代码)开发的简介以及如何选择最合适的低代码开发工具
  3. liferay-ui:search-container 用法
  4. 南京师范大学874计算机答案,2017年南京师范大学电气与自动化工程学院874电路考研题库...
  5. idea怎么将本地文件和远程git对比_IDEA新建本地项目关联远程git仓库
  6. 基于前端HTML+CSS+JS实现2022城市新年贺卡特效
  7. T-SQL象数组一样处理字符串、分割字符串
  8. Python学习路程day9
  9. 在vue.js中如何导出Excel表格
  10. sqlite数据库保存聊天记录
  11. 外贸企业管理系统解决方案丨汇信
  12. AutoML 是否被过度炒作?
  13. Win32反汇编(三)深层次的了解各种转移指令:IF语句有符号与无符号跳转
  14. 【华为】Smart-Link基础知识
  15. R语言实现SOM(自组织映射)模型(三个函数包+代码)
  16. 查好友ios1.0总结II:开发节奏的把握
  17. 程序员怎么应对行业变化?
  18. 计算机仿真严重拖稿,设计师100种拖稿借口!
  19. 15-Workbench 载荷与约束
  20. Shazam 是如何听音辨曲的?

热门文章

  1. 【转载】 -- 15条使人醒悟的生活中的定律
  2. easyexcel填充复杂表格并导出以及使用easyexcel遇到的坑
  3. 打造你的专属埃菲尔塔
  4. 据传苹果开发云计算版iWork 对抗微软Office
  5. 你可以跟 ChatGPT 视频聊天了!
  6. 把TKStudio改造为一个小巧的代码编辑器
  7. MySQL上手实训———陪你重拾MySQL(一)
  8. C/C++联合union用作函数参数实例(tcy)
  9. oracle位图索引和普通索引区别,Oracle学习之位图索引
  10. busybox编译时编译器的选择