在弹性搜索中过滤掉分支
Filter out branches in elastic search
我想在 elastic search 2.4 中过滤一些数据。
更具体地说,我只想考虑 'island' 标签下的记录。
如果我这样过滤:
filter : [{term: {Artists.Artist.Records.label : "Island"}}]
我会失去 Miles,但保留另外两个,因为它们有岛屿标签。这很好,但我想丢失 所有 none 岛屿记录,但仍保留顶部的所有数据。
如此给出:
{
"Artists": [
{
"Artist": "Tom Waits",
"Records": [
{
"id": 1,
"title": "Rain dogs",
"label": "Island"
},
{
"id": 2,
"title": "SwordFishTrombones",
"label": "Island"
},
{
"id": 3,
"title": "Bone Machine",
"label": "ANTI"
}
]
},
{
"Artist": "dEUS",
"Records": [
{
"id": 112,
"title": "Worst Case Scenario",
"label": "Island"
},
{
"id": 2213,
"title": "Keep you close",
"label": "Universal"
}
]
},
{
"Artist": "Miles",
"Records": [
{
"id": 42,
"title": "Kind of blue",
"label": "columbia"
}
]
}
]
}
我想结束:
{
"Artists": [
{
"Artist": "Tom Waits",
"Records": [
{
"id": 1,
"title": "Rain dogs",
"label": "Island"
},
{
"id": 2,
"title": "SwordFishTrombones",
"label": "Island"
}
]
},
{
"Artist": "dEUS",
"Records": [
{
"id": 112,
"title": "Worst Case Scenario",
"label": "Island"
}
]
}
]
}
这可能吗?谢谢!
我相信这可以通过内部点击功能来实现。您的查询看起来像这样:
{
"query": {
"filtered": {
"query": {"match_all": {}},
"filter": {
"nested": {
"path": "Artists.Artist.Records",
"filter": {
"term": {
"Records.label": "Island"
}
},
"inner_hits" : {}
}
}
}
}
}
我想在 elastic search 2.4 中过滤一些数据。
更具体地说,我只想考虑 'island' 标签下的记录。
如果我这样过滤:
filter : [{term: {Artists.Artist.Records.label : "Island"}}]
我会失去 Miles,但保留另外两个,因为它们有岛屿标签。这很好,但我想丢失 所有 none 岛屿记录,但仍保留顶部的所有数据。
如此给出:
{
"Artists": [
{
"Artist": "Tom Waits",
"Records": [
{
"id": 1,
"title": "Rain dogs",
"label": "Island"
},
{
"id": 2,
"title": "SwordFishTrombones",
"label": "Island"
},
{
"id": 3,
"title": "Bone Machine",
"label": "ANTI"
}
]
},
{
"Artist": "dEUS",
"Records": [
{
"id": 112,
"title": "Worst Case Scenario",
"label": "Island"
},
{
"id": 2213,
"title": "Keep you close",
"label": "Universal"
}
]
},
{
"Artist": "Miles",
"Records": [
{
"id": 42,
"title": "Kind of blue",
"label": "columbia"
}
]
}
]
}
我想结束:
{
"Artists": [
{
"Artist": "Tom Waits",
"Records": [
{
"id": 1,
"title": "Rain dogs",
"label": "Island"
},
{
"id": 2,
"title": "SwordFishTrombones",
"label": "Island"
}
]
},
{
"Artist": "dEUS",
"Records": [
{
"id": 112,
"title": "Worst Case Scenario",
"label": "Island"
}
]
}
]
}
这可能吗?谢谢!
我相信这可以通过内部点击功能来实现。您的查询看起来像这样:
{
"query": {
"filtered": {
"query": {"match_all": {}},
"filter": {
"nested": {
"path": "Artists.Artist.Records",
"filter": {
"term": {
"Records.label": "Island"
}
},
"inner_hits" : {}
}
}
}
}
}