小编mod*_*dec的帖子

Elasticsearch聚合按每个存储桶的前一个结果进行过滤

在Elasticsearch的单个索引中给出这样的数据集:

entityId | created    | status
---------+------------+-----------
1        | 2000/01/01 | draft
1        | 2001/01/02 | approved
2        | 2000/01/01 | draft
2        | 2000/01/02 | approved
2        | 2001/01/03 | rejected
3        | 2000/01/01 | draft
3        | 2001/01/03 | approved

我想仅过滤批准最新状态的实体.

所以我一直在尝试聚合和子聚合,我已经设法让所有实体都只有最新的状态,如下所示:

{
  "size": 0,
  "aggs": {
    "newest-event-query": {
      "terms": {
        "field": "entityId"
      },
      "aggs": {
        "newest-event": {
          "top_hits": {
            "size": 1,
            "sort": [
              {
                "created": {
                  "order": "desc"
                }
              }
            ]
          }
        }
      }
    }
  }
} …
Run Code Online (Sandbox Code Playgroud)

immutability aggregation elasticsearch

5
推荐指数
1
解决办法
1849
查看次数

与Bluebird在安全代码块中的进展

我想在Bluebird中创建一个安全的代码块并且可以访问progress() - 这是可能的:

实现我想要的一种方法是使用异常处理程序 - 但我正在寻找一种解决方案:

var deferred = Promise.defer();
try {
    ...
    deferred.progress(10);
    ...
} catch(e) {
    deferred.reject(e);
} 
return deferred.promise;
Run Code Online (Sandbox Code Playgroud)

还根据文件:

不鼓励使用Promise.defer - 它比使用新的Promise更尴尬和容易出错.

所以我可以这样做:

return new Promise((resolve, reject) => {
    ...
});
Run Code Online (Sandbox Code Playgroud)

但我没办法推进那个?

谢谢,

promise bluebird

1
推荐指数
1
解决办法
641
查看次数