Elasticsearch 7根据nest字段排序
时间: 2023-07-20 07:08:55 浏览: 220
在 Elasticsearch 7 中,您可以使用 `nested` 类型来存储嵌套文档,并使用 `nested` 查询来搜索这些文档。如果您想对 `nested` 字段进行排序,可以使用 `nested` 聚合。以下是一个简单的示例:
假设您有一个名为 `books` 的索引,其中包含一个 `nested` 字段 `authors`。您可以使用以下查询来按 `authors` 字段中的 `name` 字段进行排序:
```
{
"size": 10,
"sort": [
{
"authors.name.keyword": {
"order": "asc",
"nested": {
"path": "authors"
}
}
}
],
"query": {
"match_all": {}
}
}
```
在这个例子中,我们使用 `authors.name.keyword` 来指定排序字段。我们还指定了 `nested` 参数,告诉 Elasticsearch 我们要对嵌套字段进行排序,并使用 `path` 参数指定 `authors` 是嵌套字段的名称。
请注意,当您使用 `nested` 聚合时,您需要在查询中指定 `nested` 查询。否则,Elasticsearch 不会正确地解释您的查询,因为它不知道哪个字段是嵌套的。
相关问题
elasticsearch7按照求和字段排序
你可以使用 Elasticsearch 的聚合(aggregation)功能,在排序时按照求和字段进行排序。
以下是一个示例查询,将按照 "count" 字段的求和结果进行排序:
```
GET /your-index-name/_search
{
"size": 0,
"aggs": {
"group_by_field": {
"terms": {
"field": "your-group-by-field"
},
"aggs": {
"sum_of_count": {
"sum": {
"field": "count"
}
}
}
}
},
"sort": [
{
"sum_of_count.value": {
"order": "desc"
}
}
]
}
```
其中,"your-index-name" 是你要查询的索引名称,"your-group-by-field" 是你要按照哪个字段分组,"count" 是你要求和的字段。
你可以根据需要自行修改查询中的字段和参数。
es多个字段排序_ElasticSearch多字段权重排序居然可以这么玩
是的,Elasticsearch可以使用多个字段进行排序,您可以指定每个字段的权重,以便实现更精确的排序。以下是一个使用多个字段进行排序的例子:
假设您有一个包含“title”和“description”字段的索引,您希望按照这两个字段的权重进行排序,可以使用以下查询:
```
{
"query": {
"match": {
"title": "Elasticsearch"
}
},
"sort": [
{
"_score": {
"order": "desc"
}
},
{
"title": {
"order": "asc",
"boost": 3
}
},
{
"description": {
"order": "asc",
"boost": 2
}
}
]
}
```
在此查询中,首先使用“match”查询搜索包含“Elasticsearch”关键字的文档,然后使用“sort”参数按照以下顺序进行排序:
1. `_score`:按照匹配度进行降序排序。
2. `title`:按照“title”字段进行升序排序,并为其指定权重为3。
3. `description`:按照“description”字段进行升序排序,并为其指定权重为2。
这将首先按照匹配度对文档进行排序,然后按照“title”字段的权重进行排序,最后按照“description”字段的权重进行排序。
请注意,您可以为每个字段指定不同的排序顺序和权重,以便根据您的需求进行灵活的排序。
阅读全文