Calibre has a feature that lets you create subtags. See "Making subgroups of tags" in the official blog post.

Now to actually get hierarchical tags, in the tags section of the metadata entry enter a tag of the form MainTag.SubTag. Like in the top figure on the right and example would be Classics.Russian or Classics.English.

Say, I have tags

Classics
|__ Russian
|__ English

What search expression should I use to display all the books that are tagged with "Classics" or with its subtags i.e "Classics.English" and "Classics.Russian"?

I can get the result with

tags:"=Classics.English" or tags:"=Classics.Russian" or tags:"=Classics"