我的Elastic搜索文档看起来像这样:
{
"_index": "terms",
"_type": "_doc",
"_id": "30028861",
"_version": 36,
"_seq_no": 338988,
"_primary_term": 6,
"found": true,
"_source": {
"title": {
"value": "Credit Card Number",
"is_changed": false
},
"node_id": 30028861,
"domain_id": 30028838,
"node_name": "Credit Card Number",
"parent_id": 30028839,
"term_name": "Credit Card Number",
"account_id": 30028807,
"published_status": "Published",
"published_status_id": "PUB",
"node_sub_type": "TRM",
}
}
我尝试添加Filter子句,条件为must_not
我的问题是:
{
"from":0,
"size":10,
"track_total_hits":true,
"query":{
"bool":{
"must":[
{
"match":{
"account_id":30028807
}
}
],
"filter":[
{
"bool":{
"should":[
{
"terms":{
"domain_id":[
30119066,
30123338
]
}
},
{
"terms":{
"parent_id":[
30028839
]
}
}
]
}
},
{
"bool":{
"must_not":[
{
"terms":{
"published_status_id":[
"PUB"
]
}
},
{
"terms":{
"published_status":[
"Published"
]
}
}
]
}
}
],
"must_not":{
"terms":{
"published_status.raw":[
"Disabled"
]
}
}
}
},
"_source":[
"node_type",
"node_id",
"parent_name",
"table_name"
]
}
所以As In must_not mentioned,如果PUB中的published_status_id和Published文档中的published_status不应该返回,但它会返回包含两者的所有文档。使用过滤器子句的整个意图是找到domain_id和parent_id,published_status_id不在PUB中,published_status不在Published中。但它返回的状态与酒吧
1条答案
按热度按时间gpnt7bae1#
我看到你有
published_status.raw
,它可能是一个keyword
,因此,published_status
可能是一个text
字段。鉴于此,must_not
中的子句可能应该是另外,请确保检查可能遇到相同问题的
published_status_id
,您可能需要使用published_status_id.raw
才能进行精确的terms
匹配。