ElasticSearch备考 -- Async search

一、题目

通过异步方式查询earthquakes索引下Magnitude大于5的数据

二、思考

正常的查询大家可能会用的多一点,这种异步查询为数据量比较大的查询在后台执行,不用同步等待结果,待执行完成在获取结果。

三、解题

Step 1、准备基础数据

bash 复制代码
# DELETE earthquakes
PUT earthquakes

# 初始化数据
POST earthquakes/_bulk
{"index":{"_id":1}}
{"DateTime":"2016-01-01 12:12:12", "Magnitude":4.56}
{"index":{"_id":2}}
{"DateTime":"2016-01-01 15:12:12", "Magnitude":6.46}
{"index":{"_id":3}}
{"DateTime":"2016-02-02 13:12:12", "Magnitude":4}
{"index":{"_id":4}}
{"DateTime":"2016-03-02 13:12:12", "Magnitude":6}

Step 2、执行异步查询

注意:使用的api是_async_search

bash 复制代码
POST earthquakes/_async_search?size=0
{
  "query": {
    "range": {
      "Magnitude": {
        "gte": 5
      }
    }
  }
}

Step 3、异步获取结果

在官网通过的api说明中,可以获取到一个id,然后通过这个ID可以获取异步执行的结果,但是由于我本地没有这么多的数据集,无法形成一个正常的异步查询。暂且通过官网API提供的实例进行假设练习。官网API实例返回异步查询结果如下

bash 复制代码
{
  "id" : "FmRldE8zREVEUzA2ZVpUeGs2ejJFUFEaMkZ5QTVrSTZSaVN3WlNFVmtlWHJsdzoxMDc=", 
  "is_partial" : true, 
  "is_running" : true, 
  "start_time_in_millis" : 1583945890986,
  "expiration_time_in_millis" : 1584377890986,
  "response" : {
    "took" : 1122,
    "timed_out" : false,
    "num_reduce_phases" : 0,
    "_shards" : {
      "total" : 562, 
      "successful" : 3, 
      "skipped" : 0,
      "failed" : 0
    },
    "hits" : {
      "total" : {
        "value" : 157483, 
        "relation" : "gte"
      },
      "max_score" : null,
      "hits" : [ ]
    }
  }
}

在通过get方式获取对应异步结果,模版为 get /_async_search/{id}

bash 复制代码
GET /_async_search/FmRldE8zREVEUzA2ZVpUeGs2ejJFUFEaMkZ5QTVrSTZSaVN3WlNFVmtlWHJsdzoxMDc=

还可以通过其他命令例如:

查询异步执行状态,API模版为 GET /_async_search/status/{id}

bash 复制代码
GET /_async_search/status/FmRldE8zREVEUzA2ZVpUeGs2ejJFUFEaMkZ5QTVrSTZSaVN3WlNFVmtlWHJsdzoxMDc=

删除异步执行,API模版为 DELETE /_async_search/{id}

bash 复制代码
DELETE /_async_search/FmRldE8zREVEUzA2ZVpUeGs2ejJFUFEaMkZ5QTVrSTZSaVN3WlNFVmtlWHJsdzoxMDc=

四、总结

同步查询和异步查询API对比记忆

  • 异步查询使用_async_search
  • 同步查询使用_search

参考资料

送一波福利:

福利一

有需要内推JD的同学,可以私信或留言,我帮您内推,流程快!!!

有需要内推JD的同学,可以私信或留言,我帮您内推,流程快!!!

有需要内推JD的同学,可以私信或留言,我帮您内推,流程快!!!

福利二

福利三

相关推荐
民乐团扒谱机6 分钟前
实验室安全教育与管理平台学习记录(七)网络安全
学习·安全·web安全
蒙奇D索大27 分钟前
【11408学习记录】考研英语长难句精析:三步拆解真题复杂结构,轻松攻克阅读难关!
笔记·学习·考研·改行学it
zd2005721 小时前
AI辅助数据分析和学习了没?
人工智能·学习
洛白白1 小时前
“职场心态与心穷
经验分享·学习·生活·学习方法
_dindong2 小时前
笔试强训:Week-4
数据结构·c++·笔记·学习·算法·哈希算法·散列表
Acrelhuang3 小时前
覆盖全场景需求:Acrel-1000 变电站综合自动化系统的技术亮点与应用
大数据·网络·人工智能·笔记·物联网
忙碌5443 小时前
智能应用开发指南:深度学习、大数据与微服务的融合之道
大数据·深度学习·微服务
DKPT3 小时前
如何设置JVM参数避开直接内存溢出的坑?
java·开发语言·jvm·笔记·学习
萤丰信息3 小时前
智慧园区系统:开启园区管理与运营的新时代
java·大数据·人工智能·安全·智慧城市·智慧园区
一 乐3 小时前
智慧党建|党务学习|基于SprinBoot+vue的智慧党建学习平台(源码+数据库+文档)
java·前端·数据库·vue.js·spring boot·学习