{
"query": {
"bool": {
"must": [
{
"nested": {
"path": "categories",
"query": {
"terms": {
"categories.id": [
9
]
}
}
}
},
{
"terms": {
"deleted": [
false
]
}
},
{
"terms": {
"published": [
true
]
}
},
{
"nested": {
"path": "vendors",
"query": {
"terms": {
"vendors.isDeletedVendor": [
false
]
}
}
}
},
{
"nested": {
"path": "vendors",
"query": {
"terms": {
"vendors.isPublishedVendor": [
true
]
}
}
}
}
],
"should": [
{
"bool": {
"must": [
{
"bool": {
"should": [
{
"bool": {
"must_not": [
{
"nested": {
"path": "manufacturers",
"query": {
"exists": {
"field": "manufacturers"
}
}
}
}
]
}
}
]
}
},
{
"bool": {
"should": [
{
"nested": {
"path": "vendors",
"query": {
"terms": {
"vendors.id": [
87
]
}
}
}
}
]
}
}
]
}
},
{
"bool": {
"must": [
{
"bool": {
"should": [
{
"bool": {
"must_not": [
{
"nested": {
"path": "manufacturers",
"query": {
"exists": {
"field": "manufacturers"
}
}
}
}
]
}
}
]
}
},
{
"bool": {
"should": [
{
"nested": {
"path": "vendors",
"query": {
"terms": {
"vendors.id": [
56
]
}
}
}
}
]
}
}
]
}
}
]
}
},
"size": 1000,
"_source": {
"includes": [
"modelName",
"vendors.id",
"manufacturers.id",
"id"
]
}
}
То, что я делаю, выглядит примерно так:
Выберите * из данных, где (ManufacturerIds - null, а vendorIds - 87) или (ManufacturerIds - null, а vendorIds - 56)
Но он возвращает такие результаты:
"hits" : [
{
"_index" : "onoff-live",
"_type" : "_doc",
"_id" : "130011",
"_score" : 5.0,
"_source" : {
"modelName" : "Galaxy A20",
"manufacturers" : [
{
"id" : 216
}
],
"id" : 130011,
"vendors" : [
{
"id" : 23
}
]
}
}]
Я не знаю, что мне не хватает, пожалуйста, дайте мне предложения, если вы хотите сопоставление, я отправлю его в ответ ...