异步搜索 API 可异步执行搜索请求、监控其进度并检索可用的部分结果。
如下的官方介绍动画,能更加生动的介绍清楚异步检索。
传统检索 VS 异步检索,在数据量比较大时:
Elasitcsearch V7.7.0版本。
异步搜索允许用户在异步搜索结果可用时检索它们,从而消除了仅在查询完全完成后才最终响应的情况。
否则普通索引会直接返回结果数据。
拿个普通索引试验一下:
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" : [ ]
}
}
}
如果看不到上述结果,说明数据量还不够大。可以再导入一些。
核心返回参数解释一下:
GET /_async_search/FjFoeU8xMHJKUW9pd1dzN1g2Rm9wOGcedFJCVnRVSVhSdVM0emN2YXZfTU9ZQToyNjYyNjk5

GET /_async_search/status/FjUxQURkZFZyUVVlUUNydjVSZXhmWGcedFJCVnRVSVhSdVM0emN2YXZfTU9ZQToyNzE3MTcy/

DELETE /_async_search/FjFoeU8xMHJKUW9pd1dzN1g2Rm9wOGcedFJCVnRVSVhSdVM0emN2YXZfTU9ZQToyNjYyNjk5

https://www.elastic.co/guide/en/elasticsearch/reference/current/async-search.html
异步搜索认证考试环节,大家了解就可以,能找到官方文档位置,知道有哪几个API。
实战业务环节结合业务需求去选型使用即可。但,更倾向于数据量极大的业务传统同步请求体验差的场景。
你实战业务场景有没有使用异步检索?欢迎留言讨论。

更短时间更快习得更多干货!
已带领71位球友通过 Elastic 官方认证!
中国仅通过百余人

原文作者:铭毅天下Elasticsearch;如有侵权,请联系管理员删除。