参考

sql-async

异步 SQL 搜索

默认情况下,SQL 搜索是同步的。他们等待完整的结果,然后再返回响应。但是,跨大型数据集或冻结数据进行搜索的结果可能需要更长的时间。
若要避免长时间等待,请运行异步 SQL 搜索。设置为您希望等待同步结果的持续时间。wait_for_completion_timeout

  1. POST _sql?format=json
  2. {
  3. "wait_for_completion_timeout": "1s",
  4. "query": "SELECT * FROM mssql_blood_boutitem ORDER BY deptname DESC",
  5. "fetch_size": 500
  6. }

如果搜索未在此时间段内完成,则搜索将变为异步。该接口返回:

  1. {
  2. "id": "FkRiRHZBZHRjUUptZkNDMEhnR0hJX3ceOXhST2E2OTRSb1N1RFRCeERhWXVNUToxNTc2Nzk4",
  3. "is_partial": false,
  4. "is_running": false,
  5. "rows": [ ]
  6. }
  • id,用于搜索的 id
  • is_partial=true时,指示搜索结果不完整
  • is_running=true时,指示搜索仍在后台运行

若要检查异步搜索的进度,请将搜索 ID 与获取异步 SQL 搜索状态 API 结合使用

  1. GET _sql/async/status/FkRiRHZBZHRjUUptZkNDMEhnR0hJX3ceOXhST2E2OTRSb1N1RFRCeERhWXVNUToxNTc2Nzk4

如果 is_running和is_partial是false ,则异步搜索已完成,并得到完整的结果。

更改搜索保留期

默认情况下,Elasticsearch会将异步 SQL 搜索存储五天。在此时间段之后,Elasticsearch 会删除搜索及其结果,即使搜索仍在运行也是如此。若要更改此保留期,请使用 参数。keep_alive

  1. POST _sql?format=json
  2. {
  3. "keep_alive": "2d",
  4. "wait_for_completion_timeout": "2s",
  5. "query": "SELECT * FROM library ORDER BY page_count DESC",
  6. "fetch_size": 5
  7. }

存储同步 SQL 搜索

默认情况下,Elasticsearch仅存储异步 SQL 搜索。要保存同步搜索,请指定并设置为 。wait_for_completion_timeout,keep_on_completion=true

  1. POST _sql?format=json
  2. {
  3. "keep_on_completion": true,
  4. "wait_for_completion_timeout": "2s",
  5. "query": "SELECT * FROM library ORDER BY page_count DESC",
  6. "fetch_size": 5
  7. }