I need to achieve following logic in elasic search
(ticketype=1 AND customerid= id AND available >1) OR(tickettype = 2 AND available >1 )
I have below query with me
"query": {
"bool": {
"minimum_should_match": 1,
"should": [
{
"bool": {
"must": [
{
"range": {
"ticket_group.available": {
"gte": 1
}
}
},
{
"match": {
"ticket_group.customer_id": (q.customer_id) ? q.customer_id : ""
}
},
{
"match": {
"ticket_group.ticket_type": 1
}
}
]
}
}
,
{
"bool":{
"must":[
{
"range":{
"ticket_group.available":{
"gte":1
}
}
},
{
"match":{
"ticket_group.ticket_type":2
}
}
]
}
}
]
}
}
But it seems that it is taking all conditions in AND even after use of should. What should be the correct query ?
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…