{ 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类型,则这是一个好的开始!
users
nested
使用nestedinner_hits,您可以通过如下查询仅检索匹配的用户名:
inner_hits
{ "_source": false, "query": { "nested": { "path": "users", "inner_hits": { <---- this is where the magic happens "_source": [ "name" ] }, "query": { "bool": { "must": [ { "term": { "users.name": "abc" } } ] } } } } }