获取具有 "greatest" 字段值的文档的更快查询过滤器?
Faster query filter for getting a document with "greatest" field value?
在 Elasticsearch 索引中,我有包含字段的文档:fooId
和 fooField
。
我想获取具有给定 fooId
值但最大值 fooField
的文档。现在,我有一个像这样的聚合的过滤查询:
"aggs": {
"topHits_agg": {
"top_hits": {
"sort": [{
"fooField": {
"order": "desc"
}
}],
size: 1
}
}
}
然而,表现并不好。有什么办法可以让它变得更好吗?
如果我理解正确你不需要 aggregation
,你可以 sort
在 fooField
上直接像这样
GET your_index/_search
{
"query": {
"filtered": {
"filter": {
"term": {
"fooId": "your_specific_id"
}
}
}
},
"sort": [
{
"fooField": {
"order": "desc"
}
}
],
"size": 1
}
在 Elasticsearch 索引中,我有包含字段的文档:fooId
和 fooField
。
我想获取具有给定 fooId
值但最大值 fooField
的文档。现在,我有一个像这样的聚合的过滤查询:
"aggs": {
"topHits_agg": {
"top_hits": {
"sort": [{
"fooField": {
"order": "desc"
}
}],
size: 1
}
}
}
然而,表现并不好。有什么办法可以让它变得更好吗?
如果我理解正确你不需要 aggregation
,你可以 sort
在 fooField
上直接像这样
GET your_index/_search
{
"query": {
"filtered": {
"filter": {
"term": {
"fooId": "your_specific_id"
}
}
}
},
"sort": [
{
"fooField": {
"order": "desc"
}
}
],
"size": 1
}