Sometimes you want to be able to query by different columns, but you’re not interested in creating secondary indexes. Filtering is one more way of allowing such queries. The mechanism is really simple – the coordinator will fetch all of the results specified by the key restrictions, and then filter out rows that do not match the rest of the restrictions.
But, there’s a catch. Filtering can be very performance-heavy, it can even result in fetching all rows from the table and then filter out just a few rows. Because of that, queries that involve filtering must be explicitly allowed to do so, by appending CQL ALLOW FILTERING keyword to each such query.
Here are some popular resources about CQL ALLOW FILTERING