Elasticsearch 异步搜索 Async search 实战

本文涉及的产品
Elasticsearch Serverless通用抵扣包,测试体验金 200元
简介: 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 代码编写,很适合封装成自己的小工具。

image.png

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

image.png

4.3 查看异步检索状态

GET /_async_search/status/FjUxQURkZFZyUVVlUUNydjVSZXhmWGcedFJCVnRVSVhSdVM0emN2YXZfTU9ZQToyNzE3MTcy/

image.png

4.4 删除/中止异步检索

DELETE /_async_search/FjFoeU8xMHJKUW9pd1dzN1g2Rm9wOGcedFJCVnRVSVhSdVM0emN2YXZfTU9ZQToyNjYyNjk5

image.png

5、官方文档地址

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


6、小结

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


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


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

相关实践学习
以电商场景为例搭建AI语义搜索应用
本实验旨在通过阿里云Elasticsearch结合阿里云搜索开发工作台AI模型服务,构建一个高效、精准的语义搜索系统,模拟电商场景,深入理解AI搜索技术原理并掌握其实现过程。
ElasticSearch 最新快速入门教程
本课程由千锋教育提供。全文搜索的需求非常大。而开源的解决办法Elasricsearch(Elastic)就是一个非常好的工具。目前是全文搜索引擎的首选。本系列教程由浅入深讲解了在CentOS7系统下如何搭建ElasticSearch,如何使用Kibana实现各种方式的搜索并详细分析了搜索的原理,最后讲解了在Java应用中如何集成ElasticSearch并实现搜索。  
相关文章
|
5月前
|
人工智能 自然语言处理 运维
让搜索引擎“更懂你”:AI × Elasticsearch MCP Server 开源实战
本文介绍基于Model Context Protocol (MCP)标准的Elasticsearch MCP Server,它为AI助手(如Claude、Cursor等)提供与Elasticsearch数据源交互的能力。文章涵盖MCP概念、Elasticsearch MCP Server的功能特性及实际应用场景,例如数据探索、开发辅助。通过自然语言处理,用户无需掌握复杂查询语法即可操作Elasticsearch,显著降低使用门槛并提升效率。项目开源地址:<https://github.com/awesimon/elasticsearch-mcp>,欢迎体验与反馈。
1499 1
|
4月前
|
存储 安全 Linux
Elasticsearch Enterprise 9.0 发布 - 分布式搜索和分析引擎
Elasticsearch Enterprise 9.0 (macOS, Linux, Windows) - 分布式搜索和分析引擎
215 0
|
4月前
|
存储 Linux iOS开发
Elasticsearch Enterprise 8.18 发布 - 分布式搜索和分析引擎
Elasticsearch Enterprise 8.18 (macOS, Linux, Windows) - 分布式搜索和分析引擎
133 0
|
9月前
|
数据采集 人工智能 运维
从企业级 RAG 到 AI Assistant,阿里云Elasticsearch AI 搜索技术实践
本文介绍了阿里云 Elasticsearch 推出的创新型 AI 搜索方案
530 3
从企业级 RAG 到 AI Assistant,阿里云Elasticsearch AI 搜索技术实践
|
8月前
|
人工智能 自然语言处理 搜索推荐
云端问道12期实操教学-构建基于Elasticsearch的企业级AI搜索应用
本文介绍了构建基于Elasticsearch的企业级AI搜索应用,涵盖了从传统关键词匹配到对话式问答的搜索形态演变。阿里云的AI搜索产品依托自研和开源(如Elasticsearch)引擎,提供高性能检索服务,支持千亿级数据毫秒响应。文章重点描述了AI搜索的三个核心关键点:精准结果、语义理解、高性能引擎,并展示了架构升级和典型应用场景,包括智能问答、电商导购、多模态图书及商品搜索等。通过实验部分,详细演示了如何使用阿里云ES搭建AI语义搜索Demo,涵盖模型创建、Pipeline配置、数据写入与检索测试等步骤,同时介绍了相关的计费模式。
236 3
|
8月前
|
人工智能 算法 API
构建基于 Elasticsearch 的企业级 AI 搜索应用
本文介绍了基于Elasticsearch构建企业级AI搜索应用的方案,重点讲解了RAG(检索增强生成)架构的实现。通过阿里云上的Elasticsearch AI搜索平台,简化了知识库文档抽取、文本切片等复杂流程,并结合稠密和稀疏向量的混合搜索技术,提升了召回和排序的准确性。此外,还探讨了Elastic的向量数据库优化措施及推理API的应用,展示了如何在云端高效实现精准的搜索与推理服务。未来将拓展至多模态数据和知识图谱,进一步提升RAG效果。
318 1
|
8月前
|
数据采集 人工智能 运维
从企业级 RAG 到 AI Assistant,阿里云Elasticsearch AI 搜索技术实践
本文介绍了阿里云 Elasticsearch 推出的创新型 AI 搜索方案。
728 5
|
9月前
|
搜索推荐 API 定位技术
一文看懂Elasticsearch的技术架构:高效、精准的搜索神器
Elasticsearch 是一个基于 Lucene 的开源搜索引擎,以其强大的全文本搜索功能和快速的倒排索引技术著称。它不仅支持数字、文本、地理位置等多类型数据,还提供了可调相关度分数、高级查询 DSL 等功能。Elasticsearch 的核心技术流程包括数据导入、解析、索引化、查询处理、得分计算及结果返回,确保高效处理大规模数据并提供准确的搜索结果。通过 RESTful API、Logstash 和 Filebeat 等工具,Elasticsearch 可以从多种数据源中导入和解析数据,支持复杂的查询需求。
529 0
|
4月前
|
JSON 安全 数据可视化
Elasticsearch(es)在Windows系统上的安装与部署(含Kibana)
Kibana 是 Elastic Stack(原 ELK Stack)中的核心数据可视化工具,主要与 Elasticsearch 配合使用,提供强大的数据探索、分析和展示功能。elasticsearch安装在windows上一般是zip文件,解压到对应目录。文件,elasticsearch8.x以上版本是自动开启安全认证的。kibana安装在windows上一般是zip文件,解压到对应目录。elasticsearch的默认端口是9200,访问。默认用户是elastic,密码需要重置。
2069 0
|
5月前
|
安全 Java Linux
Linux安装Elasticsearch详细教程
Linux安装Elasticsearch详细教程
879 1