Вопрос по использованию фильтра range для нескольких полей.
Код: Выделить всё
$t = $test::find()->filter([
'range' => [
'year' => [
'gte' => 2005,
'lte' => 9999,
]
],
])->all();
foreach ($t as $a) {
echo 'test '.$a->year . ' ' . $a->price . "<br>";
}
test 2014 1749000
test 2006 1299000
test 2011 1120000
test 2008 165000
т.е. фильтрует по году, все ок.
Но есть потребность отфильтровать по нескольких полям:
Код: Выделить всё
$t = $test::find()->filter([
'range' => [
'year' => [
'gte' => 2005,
'lte' => 9999,
],
'price' => [
'gte' => 0,
'lte' => 30000,
]
],
])->all();
test 2008 0
test 1983 30000
test 2006 0
test 1984 25000
При запросе формируется:
Код: Выделить всё
{"size":10,"query":{"match_all":{}},"filter":{"range":{"year":{"gte":2005,"lte":9999},"price":{"gte":0,"lte":30000}}}}
добавить два фитра подряд
andFilter не работает для ES
отдельно два range в массиве.
Все сводится к тому что работает только второй фильтр