参考
异步 SQL 搜索
默认情况下,SQL 搜索是同步的。他们等待完整的结果,然后再返回响应。但是,跨大型数据集或冻结数据进行搜索的结果可能需要更长的时间。
若要避免长时间等待,请运行异步 SQL 搜索。设置为您希望等待同步结果的持续时间。wait_for_completion_timeout
POST _sql?format=json
{
"wait_for_completion_timeout": "1s",
"query": "SELECT * FROM mssql_blood_boutitem ORDER BY deptname DESC",
"fetch_size": 500
}
如果搜索未在此时间段内完成,则搜索将变为异步。该接口返回:
{
"id": "FkRiRHZBZHRjUUptZkNDMEhnR0hJX3ceOXhST2E2OTRSb1N1RFRCeERhWXVNUToxNTc2Nzk4",
"is_partial": false,
"is_running": false,
"rows": [ ]
}
- id,用于搜索的 id
- is_partial=true时,指示搜索结果不完整
- is_running=true时,指示搜索仍在后台运行
若要检查异步搜索的进度,请将搜索 ID 与获取异步 SQL 搜索状态 API 结合使用。
GET _sql/async/status/FkRiRHZBZHRjUUptZkNDMEhnR0hJX3ceOXhST2E2OTRSb1N1RFRCeERhWXVNUToxNTc2Nzk4
如果 is_running和is_partial是false ,则异步搜索已完成,并得到完整的结果。
更改搜索保留期
默认情况下,Elasticsearch会将异步 SQL 搜索存储五天。在此时间段之后,Elasticsearch 会删除搜索及其结果,即使搜索仍在运行也是如此。若要更改此保留期,请使用 参数。keep_alive
POST _sql?format=json
{
"keep_alive": "2d",
"wait_for_completion_timeout": "2s",
"query": "SELECT * FROM library ORDER BY page_count DESC",
"fetch_size": 5
}
存储同步 SQL 搜索
默认情况下,Elasticsearch仅存储异步 SQL 搜索。要保存同步搜索,请指定并设置为 。wait_for_completion_timeout,keep_on_completion=true
POST _sql?format=json
{
"keep_on_completion": true,
"wait_for_completion_timeout": "2s",
"query": "SELECT * FROM library ORDER BY page_count DESC",
"fetch_size": 5
}