从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

回到顶部