Как создать запрос фильтра ElasticSearch
для вложенных объектов, чтобы результаты соответствовали обоим?
У меня есть документы, которые включают вложенные объекты, такие как:
{
"objectNumber": "1",
"nestedObjects": [
{
"category": "position",
"tag": "2300"
},
{
"category": "scope",
"tag": "External"
}
]
}
{
"objectNumber": "2",
"nestedObjects": [
{
"category": "position",
"tag": "2300"
},
{
"category": "scope",
"tag": "Internal"
}
]
}
{
"objectNumber": "3",
"nestedObjects": [
{
"category": "position",
"tag": "2300"
},
{
"category": "scope",
"tag": "Internal"
}
]
}
И я хотел бы выполнить запрос, который возвращает только документы, которые имеют вложенный объект с category=position
и tag=2300
И вложенный объект с category=scope
и tag=Internal
. objectNumber
2 и 3, но не 1.
Я дошел до этого:
{
"query": {
"nested": {
"path": "tags",
"query": {
"bool": {
"should": [
{
"bool": {
"filter": [
{
"match": {
"tags.category": "position"
}
},
{
"match": {
"tags.tag": "2200"
}
},
{
"match": {
"tags.category": "scope"
}
},
{
"match": {
"tags.tag": "Internal"
}
}
]
}
}
]
}
}
}
}
}
, который возвращает все 3 объекта, а не только 2 и 3. Любая помощь будетс благодарностью.