Вы ранее написали:
теперь вы пишите
Я что-то не очень понимаю.
Если SQL работает и вам надо получить именно тот запрос, который SQL использует, то можно запустить
POST /_sql/translate
{
"query": "SELECT * FROM p WHERE MATCH(name,'купить iphone 6s') AND category_id IN ( 2,3,4,5,6,7,8,9,10,1) and (region = 2121 or city_id IN ( 3331,3332,3343) or city IN ( 'Бар','Бершадь','Винница','Винницкая область' ) ) "
}
И тогда вы получите, большой запрос, который можно упростить до:
{
"query" : {
"bool" : {
"must" : [
{
"match" : {
"name" : {
"query" : "купить iphone 6s"
}
}
},
{
"terms" : {
"category_id" : [ 2, 3, 4, 5, 6, 7, 8, 9, 10, 1]
}
},
{
"bool" : {
"should" : [
{
"term" : {
"region" : {
"value" : 2121
}
}
},
{
"terms" : {
"city_id" : [ 3331, 3332, 3343 ]
}
},
{
"terms" : {
"city.keyword" : [ "Бар", "Бершадь", "Винница", "Винницкая область"]
}
}
]
}
}
]
}
},
"sort" : [
{
"_doc" : {
"order" : "asc"
}
}
]
}