Nested Bool Query With Two Must's


#1

I am trying to filter my results dependent on filters selected by the user, these would be for example Size Brand Etc in SQL world it would be something along the lines of WHERE (Brand = 'Brand1' OR Brand= 'Brand2') AND (Size = '10')

Here is my mapping

{
"myindex": {
    "mappings": {
        "product": {
            "properties": {
                "description": {
                    "type": "text",
                    "fields": {
                        "keyword": {
                            "type": "keyword",
                            "ignore_above": 256
                        }
                    }
                },
                "html": {
                    "type": "text",
                    "fields": {
                        "keyword": {
                            "type": "keyword",
                            "ignore_above": 256
                        }
                    }
                },
                "name": {
                    "type": "text",
                    "fields": {
                        "keyword": {
                            "type": "keyword",
                            "ignore_above": 256
                        }
                    }
                },
                "notes": {
                    "type": "text",
                    "fields": {
                        "keyword": {
                            "type": "keyword",
                            "ignore_above": 256
                        }
                    }
                },
                "price": {
                    "type": "double"
                },
                "productBrandId": {
                    "type": "integer"
                },
                "productCategory": {
                    "properties": {
                        "code": {
                            "type": "text",
                            "fields": {
                                "keyword": {
                                    "type": "keyword",
                                    "ignore_above": 256
                                }
                            }
                        },
                        "fullPath": {
                            "type": "text",
                            "fields": {
                                "keyword": {
                                    "type": "keyword",
                                    "ignore_above": 256
                                }
                            }
                        },
                        "name": {
                            "type": "text",
                            "fields": {
                                "keyword": {
                                    "type": "keyword",
                                    "ignore_above": 256
                                }
                            }
                        },
                        "parentProductCategoryId": {
                            "type": "integer"
                        },
                        "productCategoryId": {
                            "type": "integer"
                        }
                    }
                },
                "productCategoryId": {
                    "type": "integer"
                },
                "productCode": {
                    "type": "text",
                    "fields": {
                        "keyword": {
                            "type": "keyword",
                            "ignore_above": 256
                        }
                    }
                },
                "productId": {
                    "type": "integer"
                },
                "productImage": {
                    "type": "text",
                    "fields": {
                        "keyword": {
                            "type": "keyword",
                            "ignore_above": 256
                        }
                    }
                },
                "productSpecification": {
                    "type": "nested",
                    "properties": {
                        "description": {
                            "type": "text",
                            "fields": {
                                "keyword": {
                                    "type": "keyword",
                                    "ignore_above": 256
                                }
                            }
                        },
                        "name": {
                            "type": "keyword"
                        },
                        "productId": {
                            "type": "long"
                        },
                        "productSpecificationId": {
                            "type": "long"
                        },
                        "specificationId": {
                            "type": "long"
                        },
                        "value": {
                            "type": "keyword"
                        }
                    }
                },
                "taxRateId": {
                    "type": "integer"
                },
                "url": {
                    "type": "text",
                    "fields": {
                        "keyword": {
                            "type": "keyword",
                            "ignore_above": 256
                        }
                    }
                }
            }
        }
    }
}

I currently have the following query but I get no hits returned if I do one or the other I get results but not with both

{
"nested": {
	"path": "productSpecification",
	"query": {
		"bool": {
			"must": [{
					"bool": {
						"should": [{
								"term": {
									"productSpecification.name.keyword": "Brand"
								}
							},
							{
								"terms": {
									"productSpecification.value": [
										"Brand 1",
										"Brand 2"
									]
								}
							}
						]
					}
				},
				{
					"bool": {
						"should": [{
								"term": {
									"productSpecification.name.keyword": "Guarantee"
								}
							},
							{
								"terms": {
									"productSpecification.value": [
										"3 years",
										"10 years"
									]
								}
							}
						]
					}
				}
			]
		}
	}
}

}


(system) #2

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.