prefix(['user:']); $schema = [ new TextField('name'), new TextField('country'), new NumericField('dob', '', AbstractField::SORTABLE), ]; $client->ftcreate('index_cursor_del', $schema, $ftCreateArguments); // 2. Add documents $client->hset('user:0', 'name', 'Vlad', 'country', 'Ukraine', 'dob', 813801600); $client->hset('user:1', 'name', 'Vlad', 'country', 'Israel', 'dob', 782265600); $client->hset('user:2', 'name', 'Vlad', 'country', 'Ukraine', 'dob', 813801600); // 3. Execute aggregation query $ftAggregateArguments = (new AggregateArguments()) ->apply('year(@dob)', 'birth') ->groupBy('@country', '@birth') ->reduce('COUNT', true, 'country_birth_Vlad_count') ->sortBy(0, '@birth', 'DESC') ->withCursor(1); [$_, $cursor] = $client->ftaggregate('index_cursor_del', '@name: "Vlad"', $ftAggregateArguments); // 4. Explicitly remove returned cursor $client->ftcursor->del('index_cursor_del', $cursor); echo "Cursor with cursorId - {$cursor} was removed";