我目前正在将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"
}
}
}
}
1条答案
按热度按时间yftpprvb1#
我会像这样重写您的查询:
理想情况下,您应该预先计算文档中的
userid_campaignid
字段,这样就不必使用脚本聚合,因为脚本聚合的性能很糟糕,特别是因为基数本身可能已经很糟糕了。