@nProfessor

Easticsearch как правильно фильтровать по времени работы организаций?

Добрый день. Не получается отфильтровать организации по времени их работы.

Есть такие объекты:
{
 { 
  id:10,
  business_hours : [
    {type:1,from:"0000", to:'0000'},
    {type:2,from:"0900", to:'2000'},
    {type:2,from:"0900", to:'2000'},
    {type:3,from:"0900", to:'2000'},
    .....
]
 }
}

Где type:
1 - круглосуточно
2 - работает в указанный период
3 - закрыто

Первый объект в business_hours это про понедельник, дальше про вторник и т.д.

Собственно добавляю такой фильтр:
$filter = [
    'bool' => [
        'should' => [
            [
                ['term' => ['business_hours.0.type' => '1']], // круглосуточно
                [
                    'bool' => [
                        'must' => [
                            ['range' => ['business_hours.0.from' => ['lte' => '1000']]],
                            ['range' => ['business_hours.0.to' => ['gte' => '1200']]],
                            ['term' => ['business_hours.0.type' => 2]], // активно
                        ]
                    ],
                ]
            ]
        ]
    ]
];


Ожидаю что данный фильтр возьмет все объекты которые работают круглосуточно
['term' => ['business_hours.0.type' => '1']], // круглосуточно


И все объекты которые в понедельник открываются раньше 10 утра и закрываются позже 12

Но почему то ничего не находится. Что я делаю не так? Может нужно как тоиндекс настроить?
  • Вопрос задан
  • 36 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы