【发布时间】:2022-10-23 14:14:14
【问题描述】:
文件结构-
{
"hits": [
{
"_type": "_doc",
"_id": "ef0a2c44179a513476b080cc2a585d95",
"_source": {
"DIVISION_NUMBER": 44,
"MATCHES": [
{
"MATCH_STATUS": "APPROVED",
"UPDATED_ON": 1599171303000
}
]
}
},
{
"_type": "_doc",
"_id": "ef0a2c44179a513476b080cc2a585d95",
"_source": {
"DIVISION_NUMBER": 44,
"MATCHES": [ ]
}
}
]
}
问题- MATCHES 是一个嵌套数组,里面有一个文本字段 MATCH_STATUS,可以有任何值,比如“APPROVED”、“REJECTED”。 我正在寻找包含 MATCH_STATUS 的所有文档,这些文档的值为“APPROVED”、“RECOMMENDED”以及 MATCHES 中没有数据的地方(空数组“MATCHES”:[])。请注意我希望在一个查询中.
我可以在这样的两个单独的查询中做到这一点 -
获取所有状态 = 推荐、已批准的匹配项
"must": [
{
"nested": {
"path": "MATCHES",
"query": {
"terms": {
"MATCHES.MATCH_STATUS.keyword": [
"APPROVED",
"RECOMMENDED"
]
}
}
}
}
]
获取所有具有空数组“匹配”的匹配:[]
{
"size": 5000,
"query": {
"bool": {
"filter": [],
"must_not": [
{
"nested": {
"path": "MATCHES",
"query": {
"exists": {
"field": "MATCHES"
}
}
}
}
]
}
},
"from": 0
}
【问题讨论】:
标签: elasticsearch elasticsearch-dsl elasticsearch-7