ElasticSearch 6.5.2给定映射和查询,将'desc'更改为'asc'并反之亦然不会影响文档顺序。没有看到任何错误,结果中只有sort: [Infinity]
。
映射:
{
"mappings": {
"_doc": {
"properties": {
"tags": {
"type": "keyword"
},
"metrics": {
"type": "nested",
"dynamic": true
}
}
}
}
}
查询
{
"query": {
"match_all": {
}
},
"sort": [
{
"metrics.http.test.value": {
"order": "desc"
}
}
]
}
文档结构:
{
"tags": ["My Tag"],
"metrics": {
"http.test": {
"updated_at": "2018-12-08T23:22:07.056Z",
"value": 0.034
}
}
}
答案 0 :(得分:1)
按嵌套字段排序时,有必要使用nested
参数来说明嵌套字段的路径。
查询中缺少的一件事是要排序的字段。假设您要对updated_at
进行排序,查询将为:
{
"query": {
"match_all": {}
},
"sort": [
{
"metrics.http.test.updated_at": {
"order": "desc",
"nested": {
"path": "metrics"
}
}
}
]
}
在使用嵌套字段进行排序时,您还应该记住的另一件事是排序中的filter
子句。进一步了解here。
答案 1 :(得分:0)
显然将映射更改为此:
"metrics": {
"dynamic": true,
"properties": {}
}
修复它,并允许以正确的顺序进行排序。