【发布时间】:2018-10-13 08:42:42
【问题描述】:
我需要快速帮助,只有当我在同一个数组中满足某些条件时,我才需要获取整个文档。
示例
在一个数组块中所有这三个条件都满足时的条件。即
- “profile.bud.buddies.code”:“1”
- "profile.bud.buddies.moredata.key":"one"
- “profile.bud.buddies.moredata.val”:“0”
不幸的是,现在它正在遍历整个文档并尝试匹配每个数组中的值,因此可能会在一个数组中匹配 code=1,在另一个数组中匹配 key=one,而在其他数组中匹配 val=0在第三个数组中。在这种情况下会发生什么,它会将整个文档返回给我,而实际上这并没有在一个数组中完成,因此不应该将文档返回给我。
我将 moredata 设为嵌套类型,但仍然无法通过。请帮忙。
我正在使用的查询
"query": {
"bool": {
"should": [
{
"match": {
"profile.bud.buddies.code": "1"
}
}
]
},
"nested": {
"path": "profile.bud.buddies.moredata",
"query": {
"bool": {
"must": [
{
"match": {
"profile.bud.buddies.moredata.key": "one"
}
},
{
"match": {
"profile.bud.buddies.moredata.val": "0"
}
}
]
}
}
}
}
文档结构
"profile": {
"x":{},
"y":{},
"a":{},
"b":{},
"bud":{
"buddies": [
{
"code":"1",
"moredata": [
{
"key": "one",
"val": 0,
"setup": "2323",
"data": "myid"
},
{
"key": "two",
"val": 1,
"setup": "23",
"data": "id"
}]
},
{
"code":"2",
"moredata": [
{
"key": "two",
"val": 0,
"setup": "2323",
"data": "myid"
},
{
"key": "three",
"val": 1,
"setup": "23",
"data": "id"
}]
}]
}
这就是我标记映射的方式;
"profile": {
"bug": {
"properties": {
"buddies": {
"properties": {
"moredata": {
"type": "nested",
"properties": {
"key": {"type": "string"},
"val": {"type": "string"}
【问题讨论】:
标签: elasticsearch nested nest elasticsearch-plugin elasticsearch-5