文件结构-
{
"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,可以有任何值,如“批准”,“拒绝”。我正在寻找搜索包含MATCH_STATUS的所有文档,其值为“批准”,“推荐”以及MATCHES中没有数据(空数组“MATCHES”:[ ]).请注意,我希望在单个查询中执行此操作.
我可以在两个单独的查询中完成此操作,如下所示-
获取状态为“建议”、“已批准”的所有匹配项
"must": [
{
"nested": {
"path": "MATCHES",
"query": {
"terms": {
"MATCHES.MATCH_STATUS.keyword": [
"APPROVED",
"RECOMMENDED"
]
}
}
}
}
]
获取具有空数组“MATCHES”的所有匹配项:[ ]
{
"size": 5000,
"query": {
"bool": {
"filter": [],
"must_not": [
{
"nested": {
"path": "MATCHES",
"query": {
"exists": {
"field": "MATCHES"
}
}
}
}
]
}
},
"from": 0
}
1条答案
按热度按时间voase2hg1#
可以使用should子句合并这两个查询。
**更新:**回答您的意见。
缺少的聚合暂时不支持嵌套字段。到目前为止存在open问题。
要获取空匹配项的计数,可以使用筛选器聚合,并将嵌套查询 Package 到布尔查询的must_not子句中。