从Elasticsearch中的数组中选择匹配的对象
{ class: 1,
users: [{
name: 'abc',
surname: 'def'
}, {
name: 'xyz',
surname: 'wef'
}, {
name: 'abc',
surname: 'pqr'
}]
}
我有一个类似于上述对象的文档结构,我只想返回名称为“ abc”的用户,但问题是它与名称“ abc”匹配但返回了所有数组。我只想要匹配的用户。
映射-
{ "class":"string",
"users" : {
"type" : "nested",
"properties": {
"name" : {"type": "string" },
"surname" : {"type": "string" }
}
}
}
回答:
然后,如果您将users
字段映射为nested
类型,则这是一个好的开始!
使用nestedinner_hits
,您可以通过如下查询仅检索匹配的用户名:
{ "_source": false,
"query": {
"nested": {
"path": "users",
"inner_hits": { <---- this is where the magic happens
"_source": [
"name"
]
},
"query": {
"bool": {
"must": [
{
"term": {
"users.name": "abc"
}
}
]
}
}
}
}
}
以上是 从Elasticsearch中的数组中选择匹配的对象 的全部内容, 来源链接: utcz.com/qa/435082.html