Supongamos que tenemos una base de datos bastante grande de productos para, por ejemplo, un teléfono móvil de 50 K. Almacenamos estos datos en Elastic Search. Ahora tengo una página de listado de productos para teléfonos móviles, allí enumero todos los 10 móviles a la vez usando la paginación con sus detalles básicos. Esa página también tiene una sección de filtro como Marca, Rango de precios, RAM, Promedio. Clasificación, fecha de lanzamiento y muchas más especificaciones.
Ahora, cuando busco un dispositivo móvil de la empresa Samsung y 6 GB de RAM, realizo una consulta elástica y obtuve los resultados y su recuento total. Así que aquí, la consulta de recuento se vuelve compleja, el recuento total depende del filtro y este tipo de consulta aumenta la carga en el sistema.
Quiero un sistema que calcule el conteo de filtros una vez y lo guarde en algún lugar para que no tenga que calcular el conteo para el mismo filtro nuevamente, reduciendo así la sobrecarga de complejidad para los mismos filtros una y otra vez. Déjame saber con tu conocimiento ¿Cómo puedo solucionar este problema o cómo debo mantener mi sistema?
Cualquier referencia o artículo también sería apreciado.
Elastic Search proporciona sus propias técnicas de almacenamiento en caché y puede usar esa configuración para almacenar en caché una consulta específica
GET /my_index/_search?request_cache=true { "size": 0, "aggs": { "popular_colors": { "terms": { "field": "colors" } } } }Aquí hay un enlace para más detalles. Tenga en cuenta que tiene tanta configuración de hardware para el almacenamiento en caché de elasticsearch. https://www.elastic.co/guide/en/elasticsearch/reference/current/shard-request-cache.html#_enabling_and_disabling_caching_per_request .
Además, si tiene varios nodos de datos, y hay pocos índices en los que se realizan consultas y agregaciones con frecuencia, y tiene diferentes configuraciones de hardware de diferentes nodos, entonces debe buscar el concepto de nodos calientes y fríos de elasticsearch, y poner sus índices imp en nodos calientes , en lugar de almacenar todo en caché
https://www.elastic.co/blog/hot-warm-architecture-in-elasticsearch-5-x
¿podríamos agregar una capa de caché y almacenar en caché el recuento de filtros más utilizados? e incrementar y disminuir el conteo siempre que se actualice el inventario. de esta manera podemos evitar el cálculo. lo cual no será posible en el caso de elasticsearch ya que invalidará el caché cuando se actualice el inventario. de esta manera podemos evitar demasiadas visitas a elasticsearch.
¿Podría actualizar la publicación anterior con la muestra de la consulta de recuento complejo que está utilizando? Sería útil identificar el problema al que se enfrenta. ¡Gracias!