Пример данных
poll_A:
{
popular: [
{ domains: [ "google.com", "etsy.com", "amazon.com" ], rank: 1 },
{ domains: [ "google.com", "amazon.com" ], rank: 2 },
]
}
poll_B:
{
popular: [
{ domains: [ "google.com", "etsy.com", "amazon.com" ], rank: 1 },
{ domains: [ "google.com", "etsy.com", "amazon.com" ], rank: 2 },
]
}
Я пытаюсь создать запрос, который проверяет, существует ли домен только в ранге 1. Следующий запрос - это то, с чего я начал, потому что он казался правильным. Тем не менее, похоже, что запрос соответствия будет проверять каждый экземпляр вложенного поля независимо от того, какой ранг я хочу проверить.
{
"query": {
"nested": {
"path": "popular",
"query": {
"bool": {
"must": [
{
"match": {
"popular.domains": "etsy.com"
}
},
{
"match": {
"popular.rank": 1
}
}
],
"must_not": [
{
"match": {
"popular.domains": "etsy.com"
}
},
{
"range": {
"popular.rank": {
"gte": 2
}
}
}
]
}
}
}
}
}
По сути, я хочу проверить, соответствует ли домен рангу 1, но соответствует не соответствует ни одному другому рангу.