java - engine - solr 6.6 1
Indexación y búsqueda de MySQL con solr (3)
Un campo ''id'' estaba presente en otro lugar del documento. Comenté esto y funcionó.
(He puesto ''en el XML a continuación para que se muestre)
Hola a todos, quiero indexar mi tabla db MySQL con solr. He instalado los componentes / adaptadores java necesarios, etc. Mi base de datos se llama ''test_db'' y la tabla que contiene se llama ''table_tb''. La tabla contiene 2 columnas (campos)
-El campo 1 se llama ''ID'' y es un entero de clave primaria autoincrementado. El campo 2 se llama ''COLA'' y es texto.
La tabla tiene dos filas (registros) ID = 1 e ID = 2 con algún texto en contra de cada uno correspondiente a la segunda columna. Configuré los siguientes archivos conf (están en los directorios correctos):
data-config.xml
<dataConfig>
<dataSource type="JdbcDataSource"
driver="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost/test_db"
user="username"
password="db_pwd"/>
<document name="doc">
<entity name="test_tb" query="select ID from test_tb">
<field column="ID" name="ID" />
<field column="COLA" name="COLA" />
</entity>
</document>
</dataConfig>
solrconfig.xml
<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
<lst name="defaults">
<str name="config">data-config.xml</str>
</lst>
</requestHandler>
schema.xml
<fields>
<field name="ID" type="int" indexed="true" stored="true" required="true"/>
<field name="COLA" type="string" indexed="true" stored="true" required="true"/>
</fields>
<uniqueKey>ID</uniqueKey>
"[URL]:8983/solr/dataimport?command=full-import"
en mi navegador obtengo los siguientes resultados:
(1) salida del navegador (xml)
<response>
−
<lst name="responseHeader">
<int name="status">0</int>
<int name="QTime">1</int>
</lst>
−
<lst name="initArgs">
−
<lst name="defaults">
<str name="config">data-config.xml</str>
</lst>
</lst>
<str name="command">full-import</str>
<str name="status">idle</str>
<str name="importResponse"/>
−
<lst name="statusMessages">
<str name="Total Requests made to DataSource">1</str>
<str name="Total Rows Fetched">2</str>
<str name="Total Documents Skipped">0</str>
<str name="Full Dump Started">2010-08-03 16:15:51</str>
−
<str name="">
Indexing completed. Added/Updated: 0 documents. Deleted 0 documents.
</str>
<str name="Committed">2010-08-03 16:15:51</str>
<str name="Optimized">2010-08-03 16:15:51</str>
<str name="Total Documents Processed">0</str>
<str name="Total Documents Failed">2</str>
<str name="Time taken ">0:0:0.32</str>
</lst>
−
<str name="WARNING">
This response format is experimental. It is likely to change in the future.
</str>
</response>
Sugiriendo que 2 registros fueron leídos pero no indexados
Salida del lado del servidor
WARNING: Error creating document : SolrInputDocument[{ID=ID(1.0)={1}}]
org.apache.solr.common.SolrException: Document [null] missing required field: id
WARNING: Error creating document : SolrInputDocument[{ID=ID(1.0)={2}}]
org.apache.solr.common.SolrException: Document [null] missing required field: id
¿Alguien sabe lo que estoy haciendo mal?
¡¡¡Gracias de antemano por cualquier ayuda!!!
Necesita tener sincronizado: scheme.xml y lo que está en data-config.xml (la definición de campos debe ser la misma)
<entity name="test_tb" query="select ID from test_tb">
<field column="ID" name="ID" />
<field column="COLA" name="COLA" />
</entity>
debería ser query = "select * from test_tb", creo.
si ejecuta la consulta, seleccione id de test_tb y obtendrá solo una columna mientras desea dos.