es 指定排序字段_Elasticsearch:根据类型对不同字段进行排序
时间: 2023-08-03 16:06:09 浏览: 127
elasticsearch(es)
在 Elasticsearch 中,可以使用 "sort" 参数来指定排序字段。如果你想要根据类型对不同的字段进行排序,可以使用 "type" 字段进行条件判断,然后在排序中使用不同的字段。
例如,假设你有一个索引,其中包含两种类型的文档: "user" 和 "post"。你想要按照以下规则对结果进行排序:
- 如果是 "user" 类型,按照 "name" 字段进行升序排序。
- 如果是 "post" 类型,按照 "date" 字段进行降序排序。
你可以使用以下查询:
```
{
"query": {
"match_all": {}
},
"sort": [
{
"_type": {
"order": "asc"
}
},
{
"name": {
"order": "asc",
"nested_path": "user",
"nested_filter": {
"term": {
"_type": "user"
}
}
}
},
{
"date": {
"order": "desc",
"nested_path": "post",
"nested_filter": {
"term": {
"_type": "post"
}
}
}
}
]
}
```
在这个查询中,首先按照类型进行升序排序。然后,对于 "user" 类型的文档,按照 "name" 字段进行升序排序。对于 "post" 类型的文档,按照 "date" 字段进行降序排序。请注意,对于嵌套字段,需要使用 "nested_path" 和 "nested_filter" 参数来指定嵌套文档的路径和过滤条件。
阅读全文