我目前正在將 ES 集群從版本 6 更新到 7,并且在版本 7 中引入了重大更改,其中缺少檔案值將引發錯誤。我的目標是更改此查詢并選擇存在這些值并且應該解決我的問題的所有檔案。如何向此查詢添加must not contain或must contain以實作我的目標?
{
"query":{
"bool":{
"must":[
{
"terms":{
"state":[
"pending",
"queued",
"deferred"
]
}
},
{
"terms":{
"tenant_tag":[
"prod"
]
}
}
]
}
},
"aggs":{
"count":{
"cardinality":{
"script":"doc['user_id'].value '_' doc['campaign_id'].value"
}
}
}
}
uj5u.com熱心網友回復:
我會像這樣重寫您的查詢:
{
"query":{
"bool":{
"filter":[
{
"exists": { "field": "user_id" }
},
{
"exists": { "field": "campaign_id" }
},
{
"terms":{
"state":[
"pending",
"queued",
"deferred"
]
}
},
{
"terms":{
"tenant_tag":[
"prod"
]
}
}
]
}
},
"aggs":{
"count":{
"cardinality":{
"script":"doc['user_id'].value '_' doc['campaign_id'].value"
}
}
}
}
理想情況下,您應該預先計算userid_campaignid檔案中的欄位,因此您不必使用腳本聚合,這在性能方面很糟糕,特別是因為基數本身已經很糟糕。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/513921.html
標籤:弹性搜索
