tomcat configuration solr dataimporthandler

tomcat - Solr DataImportHandler no encontrado



configuration (11)

Asegúrese de tener los siguientes tres campos obligatorios correctos.

1) Una entrada para el controlador de importación de datos en solr-conf.xml

</requestHandler> <requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler"> <lst name="defaults"> <str name="config">data-config.xml</str> </lst> </requestHandler>

2) Su archivo de guerra Solr conoce la carpeta solr-home y, por lo tanto, las bibliotecas incluidas en solr-home. Si solr-home se agrega explícitamente.

Para que su solr.war sepa de la carpeta solr-home despliegue el solr.war en el servidor.

Vaya a apache-tomcat-6.0.36 / webapps / solr / WEB-INF y abra web.xml en cualquier editor de texto.

Ahora busque la entrada que se muestra a continuación

<!-- <env-entry> <env-entry-name>solr/home</env-entry-name> <env-entry-value> /Path/To/My/solr/Home/solr/</env-entry-value> <env-entry-type>java.lang.String</env-entry-type> </env-entry> -->

reemplace el valor de la carpeta solr-home en su caso. Esto hará que solr, señale la carpeta solr-home, por lo tanto, la carpeta lib dentro de ella.

3) Agregue su nueva ubicación de bibliotecas a /home/javaguys/solr-home/collection1/conf/solr-config.xml. justo debajo de la etiqueta como.

Esto resolverá su problema, espero que para obtener más información, consulte esta solución aquí.

Estoy usando Solr 3.3.0 con Tomcat 6.0.26. Pude instalar Solr con éxito e incluso pude acceder a su interfaz web usando http: / localhost: 8084 / solr / admin.

Ahora quiero usar su gestor de importación de datos para indexar los datos de mi base de datos. He agregado los siguientes a mi solrconfig:

<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImport Handler"> <lst name="defaults"> <str name="config">data-config.xml</str> </lst> </requestHandler>

También creé un data-config.xml en el mismo directorio.

Mi archivo solrconfig tiene la siguiente ubicación para dataimport

<lib dir="../../dist/" regex="apache-solr-dataimporthandler-/d.*/.jar" />

Y he comprobado que el archivo dataimporthandler.jar existe en la carpeta dist en la siguiente ruta C: / web / solr / example / lib / apache-solr-3.3.0 / dist

Pero cada vez que escribo http: / localhost: 8084 / solr / dataimport o http: / localhost: 8084 / solr / admin / dataimport dice que el recurso no está disponible. Pensé que era debido a algún problema con la configuración de Tomcat, así que detuve Tomcat e intenté arrancar Solr desde cmd utilizando java -jar start.jar. Y obtengo el siguiente error

HTTP ERROR 500 Problem accessing /solr/. Reason: Severe errors in solr configuration. Check your log files for more detailed information on what may be wrong. If you want solr to continue after configuration errors, change: <abortOnConfigurationError>false</abortOnConfigurationError> in solr.xml ------------------------------------------------------------- org.apache.solr.common.SolrException: Error loading class ''org.apache.solr.handler.dataimport.DataImportHandler'' at org.apache.solr.core.SolrResourceLoader.findClass(SolrResourceLoader.java:389) at org.apache.solr.core.SolrCore.createInstance(SolrCore.java:423) at org.apache.solr.core.SolrCore.createRequestHandler(SolrCore.java:459) at org.apache.solr.core.RequestHandlers.initHandlersFromConfig(RequestHandlers.java:157) at org.apache.solr.core.SolrCore.<init>(SolrCore.java:563) at org.apache.solr.core.CoreContainer.create(CoreContainer.java:463) at org.apache.solr.core.CoreContainer.load(CoreContainer.java:316) at org.apache.solr.core.CoreContainer.load(CoreContainer.java:207) at org.apache.solr.core.CoreContainer$Initializer.initialize(CoreContainer.java:130) at org.apache.solr.servlet.SolrDispatchFilter.init(SolrDispatchFilter.java:94) at org.mortbay.jetty.servlet.FilterHolder.doStart(FilterHolder.java:97) at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50) at org.mortbay.jetty.servlet.ServletHandler.initialize(ServletHandler.java:713) at org.mortbay.jetty.servlet.Context.startContext(Context.java:140) at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1282) at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:518) at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:499) at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50) at org.mortbay.jetty.handler.HandlerCollection.doStart(HandlerCollection.java:152) at org.mortbay.jetty.handler.ContextHandlerCollection.doStart (ContextHandlerCollection.java:156) at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50) at org.mortbay.jetty.handler.HandlerCollection.doStart(HandlerCollection.java:152) at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50) at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130) at org.mortbay.jetty.Server.doStart(Server.java:224) at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50) at org.mortbay.xml.XmlConfiguration.main(XmlConfiguration.java:985) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.mortbay.start.Main.invokeMain(Main.java:194) at org.mortbay.start.Main.start(Main.java:534) at org.mortbay.start.Main.start(Main.java:441) at org.mortbay.start.Main.main(Main.java:119) Caused by: java.lang.ClassNotFoundException: org.apache.solr.handler.dataimport.DataImportHandler at java.net.URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at java.net.FactoryURLClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Unknown Source) at org.apache.solr.core.SolrResourceLoader.findClass(SolrResourceLoader.java:373) ... 34 more


Debe agregar el código siguiente en su archivo solrconfig.xml bajo la etiqueta config.
Nota: Cambie la versión de los archivos jar en consecuencia.

<lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-dataimporthandler-.*/.jar" /> <lib dir="${solr.install.dir:../../../..}/dist/" regex="mysql-connector-java-5.1.18-bin.jar" />

Para obtener más información, puede consultar connecting-solr-to-database .


El archivo jar que está buscando (al menos en 3.5) se encuentra en la carpeta ./dists


Estoy usando Solr 4.0 con un contenedor Glassfish 3.1.2 y resolví el problema abriendo la guerra de solr, manualmente agregando los archivos jar dentro y redistribuyendo glassfish.


He estado viendo este problema un poco por mi cuenta, usando solr 4.1 y tomcat. No pude incluir la biblioteca que necesitaba con <lib dir="../../dist/" regex="solr-dataimporthandler-.*/.jar" /> --> , que pensé que tenía que sea ​​correcto porque desde el directorio en el que tenía el archivo solrconfig.xml, había dos directorios arriba y uno abajo para dist. No fue hasta que temporalmente subjunté en la ruta directa (para mí, / opt / solr / dist) que me di cuenta de que el problema era que estaba comenzando desde el directorio incorrecto. Resulta que lo que necesitaba era:

<lib dir="../dist/" regex="solr-dataimporthandler-.*/.jar" /> -->

Por lo tanto, si tiene problemas para incluir esto, compruebe que está comenzando desde el directorio que contiene su directorio conf y no desde el directorio conf.


La versión es 4.3.1, copié el jar de dataimporthandler a /lib pero no funcionó. conf/solrconfig.xml esto a conf/solrconfig.xml para solucionar este problema.

<lib dir="../../../dist/" regex="solr-dataimporthandler-.*/.jar" />


Parece que para varias versiones de Solr, incluido el 4.3, el contenedor del controlador de importación de datos no está incluido en el archivo final de guerra cuando se compila desde el origen.

Hay una solución muy simple para esto al modificar el archivo /solr/webapp/build.xml.

  1. Abra ese archivo y encuentre el objetivo "dist".
  2. Encuentre esta sección del objetivo "dist":

    <lib dir="${dist}" excludes="${exclude.from.war},${common.classpath.excludes}">

  3. Agregue este elemento a la lista de incluye en esa sección:

    <include name="apache-solr-dataimporthandler-${version}.jar" />

Guardar y Salir.

Ahora, cuando construyas, haz lo siguiente:

  • ant dist-contrib
  • ant dist

Para verificar que los jar de dataimporthandlers estén en su archivo WAR, descomprímalo y búsquelo entre los jar en el directorio WEB-INF / lib.

Algunas variaciones de esto probablemente también funcionarán para versiones anteriores.


Por lo que nos dice, su nombre de archivo jar no coincide con la expresión regular proporcionada:

Con la configuración dada:

<lib dir="../../dist/" regex="apache-solr-dataimporthandler-/d.*/.jar" />

El archivo:

dataimporthandler.jar

No coincide con la expresión regular, mientras que tiene que hacerlo, como se muestra en el archivo de configuración de muestra para Solr

Probablemente empiece por solo especificar:

<lib dir="../../dist/"/>


Resolví este problema construyendo dataimporthandler jar de la fuente de Solr. Para 3.1, dataimporthandler no está incluido en apache-solr-core-3.1.0.jar. No pude encontrar el archivo jar para dataimporthandler, así que lo construí desde la fuente y lo puse en mi directorio solr lib


Tuve este problema dos veces, en Windows Tomcat y Ubuntu Tomcat.
SOLR 4.3 y Tomcat 7

Asegúrese de que el archivo a continuación se encuentre en la carpeta SOLR_Home / lib
solr-dataimporthandler-4.3.0.jar

Como se mencionó anteriormente, también necesita la referencia en el archivo de configuración. Ajuste la ruta según sea necesario.

<lib dir="../../dist/" regex="apache-solr-dataimporthandler-/d.*/.jar" />

Podría tener algunos caminos enredados, pero así es como lo hice funcionar.


puse solr jar en WEB-INF / lib