Almacenamiento en caché vs indexación

¿Cuál es la verdadera diferencia entre una solución de almacenamiento en caché y una solución de indexación? Me parece que una solución de indexación es, de hecho, el almacenamiento en caché con la capacidad de ejecutar consultas de búsqueda (como: Elastic Search). ¿Alguna vez habrá alguna razón real para usar una solución de almacenamiento en caché y una solución de indexación dentro del mismo proyecto o la solución de indexación básicamente hace que cualquier otro almacenamiento en caché sea redundante?

Ejemplo: supongamos que uso NEST para ElasticSearch, que almacenaría y devolvería POCO; si luego consulto ElasticSearch y me devuelven el POCO, ¿no se considera que está usando un objeto en caché devuelto por ElasticSearch?

Por el momento, almaceno datos en un caché usando una interfaz ICacheManager que tengo ... algo como esto:

return CacheManager.Get(cacheKey, () =>
{
    // return something...
});

¿Sería esto redundante con ElasticSearch?

EDITAR

Gracias a todos por las respuestas. Soy plenamente consciente de lo que es un caché y ya entendí la idea general detrás de un índice para la búsqueda textual, por lo que realmente me preguntaba si el índice ya funciona como caché y, por lo tanto, haría que cualquier otro caché sea redundante. Después de todo, no quisiera mantener 2 memorias caché en la memoria (ejemplo: ElasticSearch + Redis) cuando una funcionaría bien. Creo que ahora tengo una mejor idea; especialmente cuando me di cuenta de que no todos los campos siempre se almacenan en el índice y, por lo tanto, necesitamos obtener el objeto de un caché o directamente desde el DB de todos modos, al menos en algunos casos. ¡Gracias a todos!

Respuestas a la pregunta(3)

Su respuesta a la pregunta