query
我有一个看起来像这样的弹性搜索......
"query": {
"bool": {
"must": [{
"match": {"attrs.name": "username"}
}, {
"match": {"attrs.value": "johndoe"}
}]
}
}
...以及索引中的文档如下所示:
{
"key": "value",
"attrs": [{
"name": "username",
"value": "jimihendrix"
}, {
"name": "age",
"value": 23
}, {
"name": "alias",
"value": "johndoe"
}]
}
此查询的真正含义是以下哪项?
- 文档应包含
attrs.name = username
ORattrs.value = johndoe
- 或者,文档应该同时包含
attrs.name = username
ANDattrs.value = johndoe
,即使它们可能匹配数组中的不同元素attrs
(这意味着上面给出的文档将匹配查询) - 或者,文档应该同时包含
attrs.name = username
ANDattrs.value = johndoe
,但它们必须匹配数组中的相同元素attrs
(这意味着上面给出的文档与查询不匹配)
此外,我如何编写一个查询来表达上面列表中的#3,即只有当数组中的单个元素同时满足以下两个条件时,文档才应该匹配:attrs
- attrs.name = 用户名
- attrs.value = johndoe