1
上elasticsearch複雜的查詢,我有一個書單,每本書有嵌套的標籤:嵌套的對象
"hits": [
{
"_index": "",
"_type": "",
"_id": "",
"_score": ,
"_source": {
"name": "book1",
"tags": [
{
"t": "tagA",
"w": 100
},
{
"t": "tagB",
"w": 0
},
],
"active": true,
}
},
{
"_index": "",
"_type": "",
"_id": "",
"_score": ,
"_source": {
"name": "book2",
"tags": [
{
"t": "tagA",
"w": 100
},
{
"t": "tagB",
"w": 0
},
],
"active": true,
}
},
{
"_index": "",
"_type": "",
"_id": "",
"_score": ,
"_source": {
"name": "book3",
"tags": [
{
"t": "tagC",
"w": 100
},
{
"t": "tagB",
"w": 0
},
],
"active": false,
}
}]
首先,我試圖讓所有的「活躍」的書籍與特定的標籤,這可以通過這個得到查詢:
GET /index/type/_search
{
"query": {
"bool": {
"must_not": {"term" : { "active" : false}},
"must":
[
{
"nested": {
"path": "tags",
"query": {
"bool": {
"must": [
{
"match": {
"tags.t": "tagB"
}
}
]
}
}
}
}
]
}
}
}
爲上述,book1和book2返回。
但我現在想要得到的東西變得更加複雜。 我正在嘗試使用特定標記(tagB)獲得「有效」書籍。但是如果'tagC'在書中,那麼如果書不活躍,書也可以返回。
所以對於這個問題,book1,book2,book3會返回。
如何在elasticsearch中執行此查詢?