Elasticsearch - 获取匹配嵌套字段和另一个字段的最大值的整个文档



给定Elasticsearch中的以下映射和文档,我如何获得匹配特定条件的一组嵌套文档的最大值?例如,我如何只获得他们的车辆匹配"X motors"的文档?和"X电机";Max模型在集合里吗?

映射:

PUT /drivers
{
"mappings": {
"properties": {
"driver": {
"type": "nested",
"properties": {
"last_name": {
"type": "text"
},
"vehicle": {
"type": "nested",
"properties": {
"make": {
"type": "text"
},
"model": {
"type": "integer"
}
}
}
}
}
}
}
}

文档:

PUT /drivers/_doc/1
{
"driver": {
"last_name": "lastName1",
"vehicle": [
{
"make": "X Motors",
"model": 2005
},
{
"make": "Y Motors",
"model": 2000
}
]
}
}
PUT /drivers/_doc/2
{
"driver": {
"last_name": "lastName2",
"vehicle": [
{
"make": "X Motors",
"model": 1992
},
{
"make": "Y Motors",
"model": 2002
}
]
}
}
PUT /drivers/_doc/3
{
"driver": {
"last_name": "lastName3",
"vehicle": [
{
"make": "X Motors",
"model": 2019
},
{
"make": "Y Motors",
"model": 2020
}
]
}
}

在本例中,我想获得ID为:1的整个文档,因为它是唯一一个在它的车辆集合中包含一个max vehicle.driver.model &也匹配车辆。司机。制造"X电机"

谢谢!

下面的查询匹配所有匹配"driver.vehicle.make":"X Motors"的文档,并且包含一个最大driver.vehicle.model的对象

{
"sort": [
{
"driver.vehicle.model": {
"order": "desc",
"nested": {
"path": "driver.vehicle"
}
}
}
],
"size":1,
"query": {
"nested": {
"path": "driver.vehicle",
"query": {
"bool": {
"must": [
{
"match": {
"driver.vehicle.make": "X Motors"
}
}
]
}
}
}
}
}

搜索结果将是-

"hits": [
{
"_index": "66156348",
"_type": "_doc",
"_id": "3",
"_score": null,
"_source": {
"driver": {
"last_name": "lastName3",
"vehicle": [
{
"make": "X Motors",
"model": 2019
},
{
"make": "Y Motors",
"model": 2020
}
]
}
},
"sort": [
2020
]
}
]

最新更新