我在Elasticsearch中有一个索引,里面有这样的文档:
"transactionId" : 5588,
"clientId" : "1",
"transactionType" : 1,
"transactionStatus" : 51,
"locationId" : 12,
"images" : [
{
"imageId" : 5773,
"imagePath" : "http://some/url/path",
"imageType" : "dummyData",
"ocrRead" : "XYZ999",
"imageName" : "SOMENUMBERSANDCHARACTERS.jpg",
"ocrConfidence" : "94.6",
"ROITopLeftCoordinate" : "839x251",
"ROIBottomRightCoordinate" : "999x323"
}
],
"creationTimestamp" : 1669645709130,
"current" : true,
"timestamp" : 1669646359686
这是一个“只添加”类型的堆栈,其中的记录永远不会更新。.-添加具有“transactionStatus”的新记录:10 .-交易ID改变状态,然后,为相同的交易ID添加具有“交易状态”的新记录:51等等。
我想要实现的是获得一个包含10条记录的列表,这些记录的最后状态是51,但我无法编写正确的查询。
以下是我尝试过的方法:
{ "size": 10,
"query": {
"match_all": {}
},
"collapse": {
"field": "transactionId",
"inner_hits": {
"name": "most_recent",
"size": 1,
"sort": [{"timestamp": "desc"}]
}
},
"post_filter": {
"term": {
"transactionStatus": "51"
}
}
}
如果我将post_filter术语上的“transactionStatus”:51更改为10,则会得到最后一条记录不是10的transactionID记录。
我不知道我是否能用一种恰当的方式来解释。我为我的英语道歉,这不是我的母语。
1条答案
按热度按时间mkh04yzy1#
这一个将过滤,然后按时间戳排序。让我知道是否有遗漏的东西。