Apache Solr: indexación de datos
En general, indexinges una disposición de documentos u (otras entidades) de forma sistemática. La indexación permite a los usuarios localizar información en un documento.
La indexación recopila, analiza y almacena documentos.
La indexación se realiza para aumentar la velocidad y el rendimiento de una consulta de búsqueda mientras se encuentra un documento requerido.
Indexación en Apache Solr
En Apache Solr, podemos indexar (agregar, eliminar, modificar) varios formatos de documentos como xml, csv, pdf, etc. Podemos agregar datos al índice Solr de varias maneras.
En este capítulo, vamos a discutir la indexación:
- Usando la interfaz web de Solr.
- Usando cualquiera de las API de cliente como Java, Python, etc.
- Utilizando la post tool.
En este capítulo, discutiremos cómo agregar datos al índice de Apache Solr usando varias interfaces (línea de comando, interfaz web y API de cliente Java)
Agregar documentos usando el comando Post
Solr tiene un post comando en su bin/directorio. Con este comando, puede indexar varios formatos de archivos como JSON, XML, CSV en Apache Solr.
Navegar por el bin directorio de Apache Solr y ejecutar el –h option del comando post, como se muestra en el siguiente bloque de código.
[Hadoop@localhost bin]$ cd $SOLR_HOME
[Hadoop@localhost bin]$ ./post -h
Al ejecutar el comando anterior, obtendrá una lista de opciones del post command, Como se muestra abajo.
Usage: post -c <collection> [OPTIONS] <files|directories|urls|-d [".."]>
or post –help
collection name defaults to DEFAULT_SOLR_COLLECTION if not specified
OPTIONS
=======
Solr options:
-url <base Solr update URL> (overrides collection, host, and port)
-host <host> (default: localhost)
-p or -port <port> (default: 8983)
-commit yes|no (default: yes)
Web crawl options:
-recursive <depth> (default: 1)
-delay <seconds> (default: 10)
Directory crawl options:
-delay <seconds> (default: 0)
stdin/args options:
-type <content/type> (default: application/xml)
Other options:
-filetypes <type>[,<type>,...] (default:
xml,json,jsonl,csv,pdf,doc,docx,ppt,pptx,xls,xlsx,odt,odp,ods,ott,otp,ots,
rtf,htm,html,txt,log)
-params "<key> = <value>[&<key> = <value>...]" (values must be
URL-encoded; these pass through to Solr update request)
-out yes|no (default: no; yes outputs Solr response to console)
-format Solr (sends application/json content as Solr commands
to /update instead of /update/json/docs)
Examples:
* JSON file:./post -c wizbang events.json
* XML files: ./post -c records article*.xml
* CSV file: ./post -c signals LATEST-signals.csv
* Directory of files: ./post -c myfiles ~/Documents
* Web crawl: ./post -c gettingstarted http://lucene.apache.org/Solr -recursive 1 -delay 1
* Standard input (stdin): echo '{commit: {}}' | ./post -c my_collection -
type application/json -out yes –d
* Data as string: ./post -c signals -type text/csv -out yes -d $'id,value\n1,0.47'
Ejemplo
Supongamos que tenemos un archivo llamado sample.csv con el siguiente contenido (en el bin directorio).
Identificación del Estudiante | Nombre de pila | Apellido | Teléfono | Ciudad |
---|---|---|---|---|
001 | Rajiv | Reddy | 9848022337 | Hyderabad |
002 | Siddharth | Bhattacharya | 9848022338 | Calcuta |
003 | Rajesh | Khanna | 9848022339 | Delhi |
004 | Preethi | Agarwal | 9848022330 | Pune |
005 | Trupthi | Mohanty | 9848022336 | Bhubaneshwar |
006 | Archana | Mishra | 9848022335 | Chennai |
El conjunto de datos anterior contiene detalles personales como identificación del estudiante, nombre, apellido, teléfono y ciudad. El archivo CSV del conjunto de datos se muestra a continuación. Aquí, debe tener en cuenta que debe mencionar el esquema, documentando su primera línea.
id, first_name, last_name, phone_no, location
001, Pruthvi, Reddy, 9848022337, Hyderabad
002, kasyap, Sastry, 9848022338, Vishakapatnam
003, Rajesh, Khanna, 9848022339, Delhi
004, Preethi, Agarwal, 9848022330, Pune
005, Trupthi, Mohanty, 9848022336, Bhubaneshwar
006, Archana, Mishra, 9848022335, Chennai
Puede indexar estos datos en el núcleo denominado sample_Solr utilizando la post comando de la siguiente manera:
[Hadoop@localhost bin]$ ./post -c Solr_sample sample.csv
Al ejecutar el comando anterior, el documento dado se indexa bajo el núcleo especificado, generando el siguiente resultado.
/home/Hadoop/java/bin/java -classpath /home/Hadoop/Solr/dist/Solr-core
6.2.0.jar -Dauto = yes -Dc = Solr_sample -Ddata = files
org.apache.Solr.util.SimplePostTool sample.csv
SimplePostTool version 5.0.0
Posting files to [base] url http://localhost:8983/Solr/Solr_sample/update...
Entering auto mode. File endings considered are
xml,json,jsonl,csv,pdf,doc,docx,ppt,pptx,xls,xlsx,odt,odp,ods,ott,otp,ots,rtf,
htm,html,txt,log
POSTing file sample.csv (text/csv) to [base]
1 files indexed.
COMMITting Solr index changes to
http://localhost:8983/Solr/Solr_sample/update...
Time spent: 0:00:00.228
Visite la página de inicio de Solr Web UI usando la siguiente URL:
http://localhost:8983/
Seleccione el núcleo Solr_sample. De forma predeterminada, el controlador de solicitudes es/selecty la consulta es ":". Sin hacer ninguna modificación, haga clic en elExecuteQuery en la parte inferior de la página.
Al ejecutar la consulta, puede observar el contenido del documento CSV indexado en formato JSON (predeterminado), como se muestra en la siguiente captura de pantalla.
Note - De la misma forma, puede indexar otros formatos de archivo como JSON, XML, CSV, etc.
Agregar documentos usando la interfaz web de Solr
También puede indexar documentos utilizando la interfaz web proporcionada por Solr. Veamos cómo indexar el siguiente documento JSON.
[
{
"id" : "001",
"name" : "Ram",
"age" : 53,
"Designation" : "Manager",
"Location" : "Hyderabad",
},
{
"id" : "002",
"name" : "Robert",
"age" : 43,
"Designation" : "SR.Programmer",
"Location" : "Chennai",
},
{
"id" : "003",
"name" : "Rahim",
"age" : 25,
"Designation" : "JR.Programmer",
"Location" : "Delhi",
}
]
Paso 1
Abra la interfaz web de Solr usando la siguiente URL:
http://localhost:8983/
Step 2
Seleccione el núcleo Solr_sample. De forma predeterminada, los valores de los campos Request Handler, Common Within, Overwrite y Boost son / update, 1000, true y 1.0 respectivamente, como se muestra en la siguiente captura de pantalla.
Ahora, elija el formato de documento que desee entre JSON, CSV, XML, etc. Escriba el documento que se indexará en el área de texto y haga clic en el Submit Document , como se muestra en la siguiente captura de pantalla.
Agregar documentos mediante la API de cliente Java
A continuación se muestra el programa Java para agregar documentos al índice Apache Solr. Guarde este código en un archivo con el nombreAddingDocument.java.
import java.io.IOException;
import org.apache.Solr.client.Solrj.SolrClient;
import org.apache.Solr.client.Solrj.SolrServerException;
import org.apache.Solr.client.Solrj.impl.HttpSolrClient;
import org.apache.Solr.common.SolrInputDocument;
public class AddingDocument {
public static void main(String args[]) throws Exception {
//Preparing the Solr client
String urlString = "http://localhost:8983/Solr/my_core";
SolrClient Solr = new HttpSolrClient.Builder(urlString).build();
//Preparing the Solr document
SolrInputDocument doc = new SolrInputDocument();
//Adding fields to the document
doc.addField("id", "003");
doc.addField("name", "Rajaman");
doc.addField("age","34");
doc.addField("addr","vishakapatnam");
//Adding the document to Solr
Solr.add(doc);
//Saving the changes
Solr.commit();
System.out.println("Documents added");
}
}
Compile el código anterior ejecutando los siguientes comandos en la terminal:
[Hadoop@localhost bin]$ javac AddingDocument
[Hadoop@localhost bin]$ java AddingDocument
Al ejecutar el comando anterior, obtendrá el siguiente resultado.
Documents added