You can search within each particular archive type as follows:
cd /dir/where/you/want/to/start/search
find . -iname '*.zip' -exec unzip -l {} \; | grep 'file_pattern'
find . -iname '*.tar.gz' -exec tar tvf {} \; | grep 'file_pattern'
find . -iname '*.7z' -exec 7z l {} \; | grep 'file_pattern'
You could simplify its use by always search starting in the current directory, and accepting the file matching pattern (which could include regular expressions or simply be all or part of the filename) as a command-line parameter:
Create a script (named, e.g. "arcsearch") in your executable path (e.g. /usr/local/bin), making sure you "chmod +x" it to make it executable, with this content:
find . -iname $1
find . -iname '*.zip' -exec unzip -l {} \; | grep $1
find . -iname '*.tar.gz' -exec tar tvf {} \; | grep $1
find . -iname '*.7z' -exec 7z l {} \; | grep $1
Then you can simply type:
arcfind whatever_you_want
and it'll spit out the results, both "normal" files and those within archives.