Tengo una mesa con alrededor de 100.000 filas en este momento. Quiero indexar los datos en esta tabla en un Índice de Solr.¿La mejor manera de indexar datos de tabla de base de datos en Solr?
Así el método ingenuo sería:
- conseguir todas las filas
- Para cada fila: se convierten en una SolrDocument y añadir cada documento a una solicitud
- Una vez que todas las filas se convierten entonces puesto la solicitud se
Algunos problemas con este enfoque que se me ocurren son:
- Cargando datos demasiado (el contenido de toda la tabla) en la memoria
- la publicación de una de las grandes demandas
Sin embargo, algunas ventajas:
- Sólo una petición a la base de datos
- Solo una solicitud POST a Solr
El enfoque no es escalable, lo veo desde a medida que la tabla crece, también lo harán los requisitos de memoria y el tamaño de la solicitud POST. Necesito tal vez tomar n
número de filas, procesarlas, luego tomar el siguiente n
?
Me pregunto si alguien tiene algún consejo sobre cómo implementar mejor esto?
(ps. Yo busco el sitio, pero no he encontrado alguna pregunta que eran similares a este.)
Gracias.
[DataImportHandler] (http://wiki.apache.org/solr/DataImportHandler)? – nikhil500
He leído sobre eso, pero no es una asignación directa de column-to-indexField, hay una pequeña transformación que se aplica, por lo tanto, quiero hacer esto en el código. – C0deAttack
DIH es compatible con muchos [transformadores] (http://wiki.apache.org/solr/DataImportHandler#Transformer). También puede escribir [transformadores personalizados] (http://wiki.apache.org/solr/DIHCustomTransformer). Recomendaré usar DIH si es posible; creo que necesitará la menor cantidad de codificación y será más rápido que PUBLICAR los documentos. – nikhil500