2011-05-29 22 views
14

estoy Goting cambiar algunos tipos de campos en el esquema, por lo que parece que debe indexar todos los documentos en los datos del índice de Solr actuales con este tipo de cambio.Cómo reindex todos los documentos en los datos Solr

pregunta es sobre la forma de "re-índice" todos los documentos? Una solución que puedo pensar es "consultar" todos los documentos a través de la interfaz de búsqueda y volcar un archivo grande en XML o JSON, luego convertirlo al formato XML de entrada para Solr y cargarlo de nuevo a Solr para crear el esquema cambio suceder

¿Hay alguna forma mejor de hacerlo de manera más eficiente? Gracias por tu sugerencia.

Respuesta

12

En primer lugar, el vertido de los resultados de una consulta no le puede dar los datos originales si tiene campos que se indexan y no se almacena. En general, es mejor guardar una copia de la entrada a SOLR de una forma que pueda usar fácilmente para reconstruir índices desde cero si es necesario. En ese caso, simplemente ejecute una consulta de eliminación publicando <delete><query>*:*</query></delete>, luego <commit/> y luego <optimize/>. Después de eso, su índice está vacío y puede agregar documentos nuevos que usen el nuevo esquema.

Pero usted puede ser capaz de salirse con sólo correr <optimize/> después de reiniciar SOLR con el nuevo archivo de esquema. Sería bueno tener una copia de seguridad donde pueda probar que funciona para su configuración.

hay una herramienta llamada Lucas que se puede utilizar para navegar y los índices de Lucene exportación. Nunca lo intenté yo mismo, pero podría ayudarlo a exportar sus datos para que pueda volver a importarlo.

+0

Gracias Michael. Parece que es mejor tener una copia de seguridad completa de los datos fuente de origen para hacer una nueva indexación completa – Yinan

2

La idea de dumping todos los resultados de una consulta que podría dar datos incompletos o no válidos ya que podría no aparecer todos los datos dentro de su índice.

Si bien la idea de mantener una copia de su índice en un formulario en el que puede volver a insertarla funcionaría bien en una situación donde los datos no cambian, se vuelve más complicado cuando agrega un nuevo campo al esquema. En tal situación, deberá recopilar todos los datos de la fuente, formatear los datos para que coincidan con el nuevo esquema y luego insertarlo.

2

Si la cantidad de documentos en Solr es grande y necesita mantener el servidor de Solr disponible para consultas, el trabajo de indexación podría iniciarse para volver a agregar/re-indexar documentos en segundo plano.

Es útil introducir un nuevo campo para mantener la fecha y hora lastindexed por cada documento, por lo que en el caso de cualquier indexación/reindexing temas, será posible identificar a la espera de indexación de documentos.

Para mejorar la latencia de las consultas, es posible jugar con los parámetros de configuraciones para mantener las cachés después de cada confirmación.

0

Hay un PHP script que hace exactamente esto: recuperar y volver a insertar todos sus documentos Solr, reindexándolos.

para optimizar, llame a la línea de comandos:

curl http://<solr_host>:<port>/solr/<core_name>/update -F stream.body=' <optimize />' 
Cuestiones relacionadas