Si estoy desarrollando una aplicación con Java + Jersey RestAPi + MySQL, ¿es necesario usar Solr o Elasticsearch?

Permítame intentar responder lo más posible para mejorar su decisión.

  • ¿La aplicación que vas a construir se centra en la búsqueda? Para reformularlo, ¿vas a encontrar a tus clientes a través de algo que buscan, van a aterrizar en el producto que buscan a través de la búsqueda o tu producto es muy específico y bien definido y tu segmento objetivo de clientes sabe lo que está buscando? ¿para?

Si la respuesta es anterior, entonces sí, si es posterior, entonces probablemente no.


  • ¿Va a hacer muchas consultas de lectura en la base de datos que de escritura? ¿Significa que actualiza los datos una vez pero sigue buscándolos en varias formas por varios atributos bajo varias circunstancias?

Entonces sí, de lo contrario, probablemente no. Si sus escritos son tanto como sus lecturas y los números no son locos, entonces no necesita invertir en un motor de búsqueda.


  • ¿Le preocupa el tiempo de recuperación de su información? ¿Su negocio depende de que sirva el contenido a sus clientes más rápido?
  • ¿Hay un montón de contenido?

Entonces sí.

  • ¿El contenido es mínimo y no espera un crecimiento exponencial en los próximos años?

Entonces no. Probablemente sea mejor optimizar sus tablas e indexar mejor sus registros.


  • ¿Estás orientado a la plataforma? Mirando cómo está proporcionando API REST, tal vez está ofreciendo servicios, entonces es importante la búsqueda de datos ingresados ​​a través de API, ¿contarán sus usuarios mucho en la obtención de sus datos?

Probablemente sea mejor ofrecer API de búsqueda también. Si no, entonces no.


  • Si las personas van a buscar en su aplicación, ¿qué tipo de búsquedas son? ¿Van a utilizar un conjunto predefinido de filtros que haya proporcionado en un conjunto de datos manejable o las búsquedas van a utilizar como, similar, relacionado, más buscado, más buscado, mejor clasificado, permutación y combinación, número al texto o viceversa, si esto es entonces que las respuestas, la búsqueda de búsqueda completa, la predicción de consultas ?

Si es anterior, entonces no, si las consultas son coincidencias exactas a través de un conjunto de filtros que usted proporciona.

Si es esto último, mucho sí. Los motores de búsqueda están optimizados para esos términos.


  • ¿Es su aplicación como Google, flipkart, Amazon, eBay, quora, Facebook, etc., donde se espera mucha interacción social o se requiere información del producto y sus productos o contenido de venta?

La respuesta es sí, necesita un motor de búsqueda dedicado y probablemente también necesite configurarlo para escalar y agrupar. Si no, entonces probablemente no.


Si está respondiendo las preguntas anteriores, es mejor invertir tiempo y recursos en la construcción de un servidor de búsqueda dedicado.

Por otro lado, si no es así, recuerde que implica un tiempo dedicado y recursos especializados para configurar servidores de búsqueda y agruparlos, sin olvidar los cargos de alojamiento, por lo que no es trivial económicamente de ninguna manera. Por lo tanto, es mejor no invertir tanto en motores de búsqueda que optimizar lo que ya tiene.

Por lo tanto, tome una decisión basada en lo anterior, tanto Apache Solr como Elastic Search son motores fantásticos, simplemente siga adelante con cualquiera. Avíseme si esto le ayuda o si necesita más información.

El uso de Solr o Elasticsearch se basa en sus requisitos.
Ya tiene almacenamiento persistente MySQL.
Sin embargo, debe hacer estas preguntas si desea utilizar Solr o Elasticsearch

¿Necesita su aplicación más capacidades de búsqueda, como búsqueda de texto completo, función de sugerencia automática, resaltado de texto, búsqueda por facetas y muchas más funciones que no son compatibles o difíciles de lograr con bases de datos relacionales?
Eche un vistazo a sus características (Solr y Elasticsearch).

No es necesario usar Solr o Elasticsearch, pero ayudan a mejorar el rendimiento de la aplicación y proporcionan más capacidades de búsqueda cuando se usan junto con MySQL u otras bases de datos relacionales.