当前位置: 首页 > article >正文

ElasticSearch备考 -- Async search

一、题目

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

二、思考

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

三、解题

Step 1、准备基础数据

# 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

POST earthquakes/_async_search?size=0
{
  "query": {
    "range": {
      "Magnitude": {
        "gte": 5
      }
    }
  }
}

Step 3、异步获取结果

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

{
  "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}

GET /_async_search/FmRldE8zREVEUzA2ZVpUeGs2ejJFUFEaMkZ5QTVrSTZSaVN3WlNFVmtlWHJsdzoxMDc=

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

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

GET /_async_search/status/FmRldE8zREVEUzA2ZVpUeGs2ejJFUFEaMkZ5QTVrSTZSaVN3WlNFVmtlWHJsdzoxMDc=

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

DELETE /_async_search/FmRldE8zREVEUzA2ZVpUeGs2ejJFUFEaMkZ5QTVrSTZSaVN3WlNFVmtlWHJsdzoxMDc=

四、总结

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

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


参考资料

  • Async search | Elasticsearch Guide [8.1] | Elastic

送一波福利:

福利一

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

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

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

福利二

福利三


http://www.kler.cn/news/335216.html

相关文章:

  • 人工值守向无人值守转变的智慧油站开源了
  • 51单片机的光照强度检测【proteus仿真+程序+报告+原理图+演示视频】
  • 计算机找不到vcomp140.dll,无法继续执行代码如何解决,有什么好的修复方法
  • 顺丰Android面试题集锦及参考答案
  • 【React】类组件和函数组件
  • 智能制造--EAP设备自动化程序
  • 滚雪球学MySQL[4.4讲]:数据库的性能调优详解
  • C语言中的栈
  • JVM类数据共享(CDS)
  • 大厂面试真题-Synchronized和ReentrantLock怎么选
  • 阿里云ECS服务器仿真
  • 深入理解 C# 中的集合与数据结构
  • 贪心算法相关知识
  • 计算机毕业设计 基于Python高校岗位招聘和分析平台的设计与实现 Python+Django+Vue 前后端分离 附源码 讲解 文档
  • 【数据结构】【链表代码】随机链表的复制
  • wordpress运行环境 php版本过低提示及解决办法
  • 猫头虎深度解读:过去2周,AI领域的十大突破事件与未来展望
  • Windows 11 安装配置 Git 教程
  • 生信初学者教程(十六):GO富集分析
  • 保险丝基础知识