Number of Open Files - Calculation


Does ES opens each of the indices at the startup (When I use FS)?
Or it opens on demand, when there is a query or indexing request fired.

When I look at the list of open files it gave me an impression that it
opens all existing index file segments. If its true than we are going to
hit limit pretty fast irrespective of its usage as the no of indices grows.

Is there any formula by which I can determine the no of open files needed
based on no of indices, shards, volume of data etc?