Character filters are used to preprocess the stream of characters before it
is passed to the tokenizer.

A character filter receives the original text as a stream of characters and
can transform the stream by adding, removing, or changing characters. For
instance, a character filter could be used to convert Hindu-Arabic numerals
(٠‎١٢٣٤٥٦٧٨‎٩‎) into their Arabic-Latin equivalents (0123456789), or to strip HTML
elements like <b> from the stream.

Elasticsearch has a number of built in character filters which can be used to build
custom analyzers.