我只想在数组中的第一个元素上搜索对象,而忽略其余元素。
例如,对于下面的数据,如果我只想在model
中搜索vehicle
数组中的第一个元素。
{
"drivers" : [
{
"last_name" : "McQueen",
"vehicle" : [
{
"make" : "Powell Motors",
"model" : "Canyonero"
},
{
"make" : "Miller-Meteor",
"model" : "Ecto-1"
}
]
},
{
"last_name" : "Buzz",
"vehicle" : [
{
"make" : "Powell Motors",
"model" : "Canyonero"
},
{
"make" : "Miller-Meteor",
"model" : "Ecto-1"
}
]
}
}
我知道我可以像这样进行嵌套查询,但是这里的问题是要搜索所有车辆。我只希望搜索车辆列表中的第0个元素,而忽略其余元素。{
"query": {
"nested": {
"path": "driver",
"query": {
"nested": {
"path": "driver.vehicle",
"query": {
"bool": {
"must": [
{ "match": { "drivers.vehicle.model": "Canyonero" } }
]
}
}
}
}
}
}
}
理想情况下,我希望每次使用{ drivers.vehicle[0].model": "Canyonero" }
之类的东西来搜索列表中的第一辆车。有什么办法可以有效地做到这一点?
最佳答案
看看这个answer -当然可以,但是很麻烦。
我反而建议使用
关于elasticsearch - 如何在elasticsearch中搜索数组中的第一个元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63305778/