I am trying to generate a nested must
and should
query in elasticsearch to mimic the following condition:
( (brandsvisited ilike '%adidas%' or brandsvisited ilike '%skechers%' ) or( placecategory ilike '%Pizza Restaurant Visitors%' or placecategory ilike '%Grocery Store Visitors%' ) and( gender='Male' ) ) and polygonid = '1465'
I created the following query in elasticsearch.
"query": {
"bool": {
"must": [
{"term": {"polygonid": "1465"}},
{"term": {"gender": "Male"}},
{
"bool": {
"should": [
{"term": {"brandsvisited": "adidas"}},
{"term": {"brandsvisited": "skechers"}}
],"minimum_should_match": 1
}
},
{
"bool": {
"should": [
{"term": {"placecategory": "Pizza Restaurant Visitors"}},
{"term": {"placecategory": "Grocery Store Visitors"}}
],"minimum_should_match": 1
}
}
]
}
}
The above query returns zero results. However, if I remove the last boolean should query, it returns the results. Not sure where I am going wrong.