1、Elasticsearch 异步搜索定义

异步搜索 API 可异步执行搜索请求、监控其进度并检索可用的部分结果。

如下的官方介绍动画,能更加生动的介绍清楚异步检索。

传统检索 VS 异步检索,在数据量比较大时:

  • 传统检索可能导致超时,以至于无数据返回;或者需要等待很久,用户体验差。

  • 异步检索,可以快速响应数据,用户无需等待。

2、Elasticsearch 异步搜索发布的版本

Elasitcsearch V7.7.0版本。

3、Elasticsearch 异步搜索适用场景

异步搜索允许用户在异步搜索结果可用时检索它们,从而消除了仅在查询完全完成后才最终响应的情况。

4、Elasticsearch 异步搜索实战

4.1 执行异步检索

执行如下操作的前提是:待异步检索的索引数据量非常大(其实小了也可以,但数据量大更契合一些)。

否则普通索引会直接返回结果数据。

拿个普通索引试验一下:

POST kibana_sample_data_flights/_async_search?size=0
{"sort": [{"timestamp": {"order": "asc"}}],"aggs": {"sale_date": {"date_histogram": {"field": "timestamp","calendar_interval": "1d"}}}
}

返回结果:

{"is_partial" : false,"is_running" : false,"start_time_in_millis" : 1628663114252,"expiration_time_in_millis" : 1629095114252,"response" : {"took" : 23,"timed_out" : false,"_shards" : {"total" : 1,"successful" : 1,"skipped" : 0,"failed" : 0},"hits" : {"total" : {"value" : 10000,"relation" : "gte"},"max_score" : null,"hits" : [ ]},

为了达到异步检索的目的,可以用推荐的测试写入数据的工具:

https://github.com/oliver006/elasticsearch-test-data

你是不是也困惑,没有测试数据或者没有一定数量的测试数据?小工具来了。

产生100W+数据,一条指令:

python es_test_data.py --es_url=http://172.21.0.14:19205 --count=1000000

结果如下:

Done - total docs uploaded: 1000000, took 71 seconds

可以结合自己业务场景优化一下,python 代码编写,很适合封装成自己的小工具。

有了数据,异步检索直接开搞!

POST test_data/_async_search?size=0
{"sort": [{"last_updated": {"order": "asc"}}],"aggs": {"sale_date": {"date_histogram": {"field": "last_updated","calendar_interval": "1d"}}}
}

返回结果如下:

{"id" : "FjUxQURkZFZyUVVlUUNydjVSZXhmWGcedFJCVnRVSVhSdVM0emN2YXZfTU9ZQToyNzE3MTcy","is_partial" : true,"is_running" : true,"start_time_in_millis" : 1628662256012,"expiration_time_in_millis" : 1629094256012,"response" : {"took" : 1008,"timed_out" : false,"terminated_early" : false,"num_reduce_phases" : 0,"_shards" : {"total" : 1,"successful" : 0,"skipped" : 0,"failed" : 0},"hits" : {"total" : {"value" : 0,"relation" : "gte"},"max_score" : null,"hits" : [ ]}}
}

如果看不到上述结果,说明数据量还不够大。可以再导入一些。

核心返回参数解释一下:

  • id——可用于监控其进度、检索其结果和/或删除它的异步搜索的标识符。

  • is_partial——当查询不再运行时,指示在所有分片上搜索是失败还是成功完成。在执行查询时,is_partial 始终设置为 true。

  • is_running——搜索是否仍在执行中或已完成。

  • total——总体而言,将在多少个分片上执行搜索。

  • successful——有多少分片已成功完成搜索。

4.2 查看异步检索

GET /_async_search/FjFoeU8xMHJKUW9pd1dzN1g2Rm9wOGcedFJCVnRVSVhSdVM0emN2YXZfTU9ZQToyNjYyNjk5

4.3 查看异步检索状态

GET /_async_search/status/FjUxQURkZFZyUVVlUUNydjVSZXhmWGcedFJCVnRVSVhSdVM0emN2YXZfTU9ZQToyNzE3MTcy/

4.4 删除/中止异步检索

DELETE /_async_search/FjFoeU8xMHJKUW9pd1dzN1g2Rm9wOGcedFJCVnRVSVhSdVM0emN2YXZfTU9ZQToyNjYyNjk5

5、官方文档地址

https://www.elastic.co/guide/en/elasticsearch/reference/current/async-search.html

6、小结

异步搜索认证考试环节,大家了解就可以,能找到官方文档位置,知道有哪几个API。

实战业务环节结合业务需求去选型使用即可。但,更倾向于数据量极大的业务传统同步请求体验差的场景。

你实战业务场景有没有使用异步检索?欢迎留言讨论。

推荐

1、重磅 | 死磕 Elasticsearch 方法论认知清单(2021年国庆更新版)

2、Elasticsearch 7.X 进阶实战私训课(口碑不错)

更短时间更快习得更多干货!

已带领71位球友通过 Elastic 官方认证!

中国仅通过百余人

比同事抢先一步学习进阶干货!

Elasticsearch 异步搜索 Async search 实战相关推荐

  1. Elasticsearch:异步搜索 - async search

    Elasticsearch 通常允许你快速搜索大量数据. 在某些情况下,搜索可能在许多 shard 上执行,可能针对 frozen indices (冻结的索引)及跨越多个远程集群 (remote c ...

  2. Elasticsearch:Async search API

    当我们想要执行持续时间较长的查询时,执行异步操作是一个很好的选择. 在这篇文章中,我们将学习如何管理异步查询.异步操作由 async search API 执行. 异步搜索 API 具有与 _sear ...

  3. Elastic Search 中文拼音搜索补全实战

    引言 搜索提示是搜索框一个比较基础的功能,他赋予了搜索框生命,提高了用户的搜索体验.本文通过仿写 boss 直聘首页职位公司搜索,来实现一个自己搜索提示功能. 需求分析 搜索提示的情况比较多,比如根据 ...

  4. 【Elasticsearch】Elasticsearch 的异步搜索原理解析 _async_search

    本文为博主九师兄(QQ:541711153 欢迎来探讨技术)原创文章,未经允许博主不允许转载.有问题可以先私聊我,本人每天都在线,会帮助需要的人. 文章目录 1.概述 2. 官网翻译 获取异步搜索编辑 ...

  5. 异步爬虫模块aiohttp实战之infoq

    点击上方蓝字关注 异步爬虫模块aiohttp实战之infoq 之前写过很多的关于异步的文章,介绍了asyncio的使用,大多的只是通过简单的例子说明了asyncio的使用,但是没有拿出具体的使用例子, ...

  6. 【Elasticsearch】十九种Elasticsearch字符串搜索方式

    1.概述 十九种Elasticsearch字符串搜索方式 刚开始接触Elasticsearch的时候被Elasticsearch的搜索功能搞得晕头转向,每次想在Kibana里面查询某个字段的时候,查出 ...

  7. jquery zTree异步搜索的例子--搜全部节点

    参考博客: https://segmentfault.com/a/1190000004657854 https://blog.csdn.net/houpengfei111/article/detail ...

  8. elasticsearch高级搜索功能多维度分享

    目录 一.业务搜索核心功能 二.高级搜索匹配功能 三.搜索排序功能 elasticsearch高级搜索功能多维度分享,这也是实战的比较之路,此次我们全面分享常用的业务情景,全覆盖功能分享,让大家有一览 ...

  9. 干货 | Elasticsearch 可搜索快照深入详解

    0.可搜索快照认知前提 Elasticsearch 可搜索快照是 7.10 版本才有的新功能,之前呼声非常高. Elastic 官方网站用一整页面介绍,可见对该功能的重视. https://www.e ...

最新文章

  1. ios水果风暴游戏源码项目下载
  2. ustc小道消息20220107
  3. consul php,go-micro+php+consul实现简单的微服务
  4. Android入门(14)| 通知
  5. 坐高铁只能用身份证了?
  6. 相关滤波跟踪·MOSSE算法的梳理
  7. chrome Axure插件(Mac版)
  8. gtest中死亡测试
  9. 最好的关系,是彼此成就
  10. 在mac上使用PDF Expert中常见问题解答
  11. 三星Galaxy S21系列5G手机竟成了《天赐的声音》舞台上最亮的星?
  12. Excel实用教程-字符提取函数(FIND/LEFT/RIGHT/LEN/MID/TEXT)
  13. 每天一个俯卧撑的健身法 - 微习惯实践
  14. java linest_Java运行环境搭建的图文教程
  15. DNS 区域传送漏洞(dns-zone-tranfer)学习
  16. 机器之心最干的文章:机器学习中的矩阵、向量求导
  17. 高性能电工·电子技术实训考核装置
  18. OpenCv-C++-KAZE(AKAZE)局部特征检测(一)
  19. qda二次判别_R语言线性分类判别LDA和二次分类判别QDA实例
  20. 排序算法的稳定性及其汇总

热门文章

  1. 我,32岁程序员,三十而立,扛起了整个家
  2. C---头指针尾指针
  3. linux md是什么格式文件,MD_ 文件扩展名: 它是什么以及如何打开它?
  4. 一幅长文细学Vue(一)——Webpack打包工具
  5. 李想创业20年总结:从普通人到顶尖领袖的五个认知楼层
  6. 金山文档手机app服务器异常,为什么我的手机看不了金山文档 看不了金山文档怎么办...
  7. 数梦工厂面试2020
  8. JAVA快递单号查询接口对接第三方快递鸟api接口教程
  9. 第3.4节 泛善可陈的元组
  10. 录播系统的服务器有哪些,录播系统