1、批量查询的好处

就是一条一条的查询,比如说要查询100条数据,那么就要发送100次网络请求,这个开销还是很大的
如果进行批量查询的话,查询100条数据,就只要发送1次网络请求,网络请求的性能开销缩减100倍

2、mget的语法

(1)一条一条的查询

GET /test_index/test_type/1

GET /test_index/test_type/2

(2)mget批量查询

  1. GET /_mget
  2. {
  3. "docs" : [
  4. {
  5. "_index" : "test_index",
  6. "_type" : "test_type",
  7. "_id" : 1
  8. },
  9. {
  10. "_index" : "test_index",
  11. "_type" : "test_type",
  12. "_id" : 2
  13. }
  14. ]
  15. }

结果:

  1. {
  2. "docs" : [
  3. {
  4. "_index" : "test_index",
  5. "_type" : "test_type",
  6. "_id" : "1",
  7. "_version" : 1,
  8. "found" : true,
  9. "_source" : {
  10. "test_field1" : "test field1",
  11. "test_field2" : "test field2"
  12. }
  13. },
  14. {
  15. "_index" : "test_index",
  16. "_type" : "test_type",
  17. "_id" : "2",
  18. "found" : false
  19. }
  20. ]
  21. }

id为2的并没有数据,所有为false

(3)如果查询的document是一个index下的不同type种的话

  1. GET /test_index/_mget
  2. {
  3. "docs" : [
  4. {
  5. "_type" : "test_type",
  6. "_id" : 1
  7. },
  8. {
  9. "_type" : "test_type",
  10. "_id" : 2
  11. }
  12. ]
  13. }

结果:

  1. {
  2. "docs" : [
  3. {
  4. "_index" : "test_index",
  5. "_type" : "test_type",
  6. "_id" : "1",
  7. "_version" : 1,
  8. "found" : true,
  9. "_source" : {
  10. "test_field1" : "test field1",
  11. "test_field2" : "test field2"
  12. }
  13. },
  14. {
  15. "_index" : "test_index",
  16. "_type" : "test_type",
  17. "_id" : "2",
  18. "found" : false
  19. }
  20. ]
  21. }

(4)如果查询的数据都在同一个index下的同一个type下,最简单了

  1. GET /test_index/test_type/_mget
  2. {
  3. "ids": [1, 2]
  4. }

结果:

  1. {
  2. "docs" : [
  3. {
  4. "_index" : "test_index",
  5. "_type" : "test_type",
  6. "_id" : "1",
  7. "_version" : 1,
  8. "found" : true,
  9. "_source" : {
  10. "test_field1" : "test field1",
  11. "test_field2" : "test field2"
  12. }
  13. },
  14. {
  15. "_index" : "test_index",
  16. "_type" : "test_type",
  17. "_id" : "2",
  18. "found" : false
  19. }
  20. ]
  21. }

3、mget的重要性

可以说mget是很重要的,一般来说,在进行查询的时候,如果一次性要查询多条数据的话,那么一定要用batch批量操作的api
尽可能减少网络开销次数,可能可以将性能提升数倍,甚至数十倍,非常非常之重要

ElasticSearch(十二)批量查询mget的更多相关文章

  1. Elasticsearch学习笔记(十)批量查询mget、批量增删改bulk

    一.批量查询  mget             GET /_mget {   "docs":[       {         "_index":" ...

  2. (十二)数据库查询处理之Query Execution(1)

    (十二)数据库查询处理之Query Execution(1) 1. 写在前面 这一大部分就是为了Lab3做准备的 每一个query plan都要实现一个next函数和一个init函数 对于next函数 ...

  3. Java开发学习(四十二)----MyBatisPlus查询语句之条件查询

    一.条件查询的类 MyBatisPlus将书写复杂的SQL查询条件进行了封装,使用编程的形式完成查询条件的组合. 这个我们在前面都有见过,比如查询所有和分页查询的时候,都有看到过一个Wrapper类, ...

  4. Hibernate(十二)Criteria查询

    一.简述 Criteria是一种比hql更面向对象的查询方式.Criteria 可使用 Criterion 和 Projection 设置查询条件.可以设置 FetchMode(联合查询抓取的模式 ) ...

  5. 7 批量查询mget、批量修改bulk

    注意:当执行多条数据查询.增删改时,一定要用mget.bulk,提升性能,减少网络传输   mget   回顾:查询单个文档 GET /beauties/my/2   mget 查询多个文档: 不同 ...

  6. 跟我一起读postgresql源码(十二)——Executor(查询执行模块之——Materialization节点(下))

    接前文,我们继续说剩下的4个Materialization节点. 7.SetOp节点 SetOp节点用于处理集合操作,对应于SQL语句中的EXCEPT.INTERSECT两种集合操作,至于另一种集合操 ...

  7. ElasticSearch(十二)删除数据插件delete-by-query

    在ElasticSearch2.0之后的版本中没有默认的delete-by-query,想使用此命令需要安装这个插件. 首先需要进入ES的目录 [root@node122 elasticsearch] ...

  8. oracle学习笔记(十二) 查询练习(二) 高级查询

    高级查询练习 /*--------------------------------------------- 分组查询 -------------------------------------*/ ...

  9. 四十二 Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)的mget和bulk批量操作

    注意:前面讲到的各种操作都是一次http请求操作一条数据,如果想要操作多条数据就会产生多次请求,所以就有了mget和bulk批量操作,mget和bulk批量操作是一次请求可以操作多条数据 1.mget ...

随机推荐

  1. win7dos删除文件和删除文件夹

    如果要删除呢?也简单:假设删除d盘下的123文件夹 del/s/q d:\123\*.* ----(用于删除文件夹下的子文件) rd/s/q d:\123 ----(用于删除文件夹) /s参数为子目录 ...

  2. Linux 性能优化解析

    前情概述 进程调度 老板 cpu 任劳任怨的打工仔 线程 工作在做什么 可运行队列 拥有的工作清单 上下文切换 和老板沟通以便得到老板的想法并及时调整自己的工作 中断 部分工作做完以后还需要及时向老板 ...

  3. 第1章 CentOS安装

    一.安装说明 1.1 CentOS介绍               CentOS(Community Enterprise Operating System,中文意思是:社区企业操作系统)是Linux ...

  4. MyBatis的一级缓存和二级缓存

    一级缓存 是SqlSession级别的缓存,当使用了clearCache方法和,或者close方法的话,这个缓存失效,如果还有同样的查询,则还会发送一次查询 SqlSession session = ...

  5. 关于编写Windows程序中启动兼容性问题

    之前用qt4编写Windows程序的时候遇到了一个软件在系统的兼容性问题:用户在win10系统下使用这个程序的时候,如果没有用低于win10版本的兼容模式运行的时候,存在运行某部分功能的时候无法使用的 ...

  6. IntelliJ IDEA删除所有断点

    参考: http://blog.csdn.net/yanziit/article/details/73459795

  7. spring aop提供了两种实现方式jdk和cglib

    Spring AOP使用了两种代理机制:一种是基于JDK的动态代理:另一种是基于CGLib的动态代理.之所以需要两种代理机制,很大程度上是因为JDK本身只提供接口的代理,而不支持类的代理. Sprin ...

  8. Atitit.ati  str  字符串增强api

    Atitit.ati  str  字符串增强api 1. java StringUtils方法全览 分类: Java2011-11-30 17:22 8194人阅读 评论(2) 收藏 举报 javas ...

  9. POJ 2309 BST

    BST Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 8565   Accepted: 5202 Description C ...

  10. python(29)- 面向对象练习Ⅲ

    题目: 基于授权定制自己的列表类型,要求定制的自己的__init__方法,   定制自己的append:只能向列表加入字符串类型的值      定制显示列表中间那个值的属性(提示:property)  ...