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的同学,可以私信或留言,我帮您内推,流程快!!!

福利二

福利三

相关推荐
bigdata-rookie12 分钟前
数据仓库建模
大数据·分布式·spark
路边草随风14 分钟前
iceberg 基于 cosn 构建 catalog
java·大数据
专注于大数据技术栈1 小时前
java学习--枚举(Enum)
java·学习
2401_840108161 小时前
一篇文章搞懂数据仓库:三种事实表(设计原则,设计方法、对比)(1)
大数据·数据仓库
我命由我123452 小时前
开发中的英语积累 P19:Inspect、Hint、Feedback、Direction、Compact、Vulnerability
经验分享·笔记·学习·职场和发展·求职招聘·职场发展·学习方法
isNotNullX2 小时前
数据仓库是什么? 一文带你看清它的架构
大数据·数据仓库·架构·etl
AI开发架构师2 小时前
大数据环境下数据仓库的容器化部署
大数据·数据仓库·ai
梦里不知身是客112 小时前
flink有状态计算中状态的分类
大数据·flink
老蒋新思维3 小时前
创客匠人峰会实录:创始人 IP 变现的 “人 + 智能体” 协同范式 —— 打破知识变现的能力边界
大数据·网络·人工智能·网络协议·tcp/ip·创始人ip·创客匠人
qq_12498707533 小时前
基于SpringBoot学生学习历史的选课推荐系统的设计与实现(源码+论文+部署+安装)
java·spring boot·后端·学习·毕业设计·毕设