Necesito actualizar una gran cantidad de documentos a menudo. Por ejemplo, configure "en línea" = verdadero para user_id = 5 y así sucesivamente. Pero la velocidad de indexación a través del controlador http es muy lenta. Soporte Solr eliminar documentos por consulta, ¿hay forma de actualizar por consulta?Actualización del índice de Solr por consulta
Respuesta
No, lamentablemente no hay ninguna característica como actualización por consulta. Sería realmente útil, como una nueva característica para posibilitar la actualización de un documento sin necesidad de volver a enviarlo por completo; Hay un niño de 5 años de edad jira issue para eso. Por ahora solo debe volver a enviar sus documentos con los campos actualizados, se sobrescribirán (significa eliminado + reinsertado) si usa el mismo uniqueKey
.
Por cierto, ¿está haciendo una solicitud http para que cada documento se actualice? Si es así, puede que sea más rápido de enviar más de un documento en un momento como este:
<add>
<doc>
<field name="employeeId">05991</field>
<field name="office">Bridgewater</field>
</doc>
<doc>
<field name="employeeId">05992</field>
<field name="office">Bridgewater</field>
</doc>
<doc>
<field name="employeeId">05993</field>
<field name="office">Bridgewater</field>
</doc>
</add>
Como javanna respondió, no hay ninguna posibilidad de actualizar mediante consulta, como Solr tampoco permite actualizar campos individuales en un documento almacenado en el índice, por lo que volver a enviar es el único método de actualización. Sin embargo, tengo curiosidad sobre por qué tus actualizaciones son tan lentas. Debajo hay algunas maneras en que puede mejorar la velocidad de actualización.
Si la emisión de una confirmación después de la actualización de cada documento individual, a continuación, esperar y sólo emitir la actualización después de actualizar un lote de documentos en el índice. Desde el Solr Tutorial:
Commit puede ser una operación costosa, así que es mejor que hacer muchos cambios a un índice en un lote y luego enviar el comando commit al final. También hay un comando de optimización que hace lo mismo que commit, , además de fusionar todos los segmentos de índice en un solo segmento, , lo que hace que sea más rápido buscar y hacer que los documentos eliminados sean eliminados.
Considere el uso de confirmaciones suaves o confirmaciones automáticas automáticas para reducir la latencia de actualización. Consulte la página NearRealtimeSearch en Solr Wiki para obtener más información.
Supuse que el proceso de actualización era lento solo por la cantidad de solicitudes http ... ¡Buenas sugerencias! – javanna
Yo usaría DIH con una consulta SQL modificada que aceptará los parámetros de la URL. consulta SQL se verá así:
SELECT user_name, user_online FROM users WHERE user_id=${dataimporter.request.user_id}
A continuación, volver a indexar los usuarios seleccionados que va a agregar el parámetro user_id a URL así:
http://<host>:<port>/solr/dataimport?command=full-import&clean=false&user_id=5
Documentos sobre el uso de DIH y personalizados parámetros: Solr - DataImportHandler
Puede desarrolle un complemento mínimo de Solr que hará el trabajo por usted en el lado del servidor de sol.
Tenga una mirada en: Discussion on Solr mailing list
Todavía no hay ninguna actualización por consulta, pero las respuestas a partir de 2012, han quedado desfasadas. Ahora en Solr 4.x hay https://wiki.apache.org/solr/Atomic_Updates para que pueda hacer lo que desea hacer en dos pasos sin necesidad de acceder al documento original.
Existen límites para la actualización atómica. Como dijo Erick en maillist, sigue siendo una actualización de documento completo detrás de la escena. Los campos de un documento que no aparece al usar la actualización atómica deben ser "almacenados"; de lo contrario, sus valores originales pueden perderse después de la actualización atómica porque creo que recupera los valores de dichos campos no listados del índice original y los combina con los campos enumerados para realizar la actualización atómica y luego actualiza todo el documento detrás de la escena. (El último Solr es v6.1.0 al escribir este comentario) –
- 1. actualización del índice lucene
- 2. Solr: puntuación de franja antes del índice
- 3. Solr consulta/campo analizador
- 4. Deshacer git actualización del índice --skip-worktree
- 5. Solr: ¿Recuperar nombres de campo de un índice de solr?
- 6. SOLR filtro de consulta vs principal-consulta
- 7. Consulta de Solr (q) o consulta de filtro (fq)
- 8. Solr errores de consulta gama
- 9. Cómo optimizar el índice de solr
- 10. ¿Cómo actualizar el índice de solr?
- 11. SOLR la optimización del rendimiento
- 12. Solr cargas índice entero en la memoria
- 13. Solr: consulta de frase exacta con EdgeNGramFilterFactory
- 14. Cómo eliminar los datos indexados SOLR por consulta con curl?
- 15. SOLR consulta de búsqueda sensibilidad de caso
- 16. ¿Por qué estoy causando una actualización de índice agrupado?
- 17. Detener el eclipse de actualización del índice Maven
- 18. ¿Cómo recuperarse de los archivos de índice eliminados de Solr?
- 19. Solr: resalte la frase de consulta
- 20. Solr parece bloquear las solicitudes de actualización al cometer
- 21. consulta de ACTUALIZACIÓN con CakePHP
- 22. ¿Cómo hacer una consulta NO en Solr?
- 23. git actualización del índice --assume-sin cambios y git reset
- 24. Recuperando campos específicos en una consulta Solr?
- 25. Borrando el índice de Solr usando solrj como cliente
- 26. uso del Índice de MySQL para consulta ORDER BY LIMIT
- 27. Actualizar solr 1.4 index a solr 3.3?
- 28. Documentos de índice PDF en Solr desde C# client
- 29. ¿Cómo hacer una consulta IN en Solr?
- 30. Booleano NO en la consulta solr
Hay un problema jira bien elaborado sobre este tema y por qué no se resuelve: https: //issues.apache.org/jira/browse/SOLR-7490 – cheffe