在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) 我想在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)
但我没办法推进那个?
谢谢,