Сначала удалите ненужное вложение двух объектов bool, попробуйте поместить все предложения в одно и то же поле "bool", как это.
Помните, что с должен документ должен иметь термин Вы сравниваете, чтобы быть включенным в результат, с должен совпадение только улучшит счет, если условие выполнено, поэтому в определенном смысле должен походить на AND и должен быть похож на ИЛИ .
В вашем примере изменение фильтра с must на must заставило запрос ничего не возвращать, возможно, из-за того, что у вас нет элемента, который имеет желаемую дату и цену, или, возможно, это была проблема с вложением bool .
Попробуйте это:
{
"query": {
"bool": {
"must": [{
"range": {
"sale_date": {
"gt": Date.now()
}
}
},
{
"range": {
"price": {
"gt": 1,
"lte": 800
}
}
}],
"filter": {
"term": {
"sold_out": false
},
}
}
},
"from": 10,
"size": 200
}
Это позволит получить только элементы с ценой lte 800 и sale_date gt Date.now ().