【问题标题】:Abort elasticsearch request using elastic.js使用 elastic.js 中止 elasticsearch 请求
【发布时间】:2014-09-16 14:13:51
【问题描述】:

有没有办法使用 elasticjs 取消对 Elasticsearch 的请求/查询?我正在开发的网络应用程序每 5 秒执行一次请求/查询,但如果由于某种原因响应未在 5 秒内显示,我想取消请求(因此浏览器不会堆积一堆由于查询重复发生而不必要的请求)。我知道这不会阻止 Elasticsearch 完成查询,但我想至少取消浏览器中的请求。

例子:

var request = ejs.Request().doSearch();
var dataFromElasticsearch;

request.then(function (data) {
    dataFromElasticsearch = data;   
});

setTimeout(function () {
    if (!dataFromElasticsearch) {
        //do something here to cancel request
    }
}, 5000)

【问题讨论】:

    标签: javascript elasticsearch elasticjs


    【解决方案1】:

    根据 documentation 对于 elasticsearch.js(3.1,在撰写本文时):

    ...调用 API 将返回一个具有 abort() 方法的对象(promise 或只是一个普通对象)。调用该 abort 方法会结束 HTTP 请求,但不会结束 Elasticsearch 正在执行的工作。

    专门针对您的示例:

    setTimeout(function () {
        if (!dataFromElasticsearch) {
            request.abort();
        }
    }, 5000)
    

    【讨论】:

    • 这个解决方案实际上不适用于我的具体示例,因为我给出的示例使用的是elasticjs 1.1,它使用doSearch() 方法,但elasticjs 1.2 不使用doSearch()。任何偶然发现这个答案的人都应该注意abort() 不是 elastic.js 方法,而是 elasticsearch.js。与其像我的问题中的示例那样构建请求,不如使用latest elastic.js examples (v 1.2 as of right now) 并使用abort(),正如@timkang 对elasticsearch.js 所建议的那样。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-18
    • 2023-03-31
    • 2018-03-20
    相关资源
    最近更新 更多