solrjErste Schritte mit solrj


Bemerkungen

In diesem Abschnitt erhalten Sie einen Überblick darüber, was solrj ist und warum ein Entwickler es verwenden möchte.

Es sollte auch alle großen Themen in solrj erwähnen und auf die verwandten Themen verweisen. Da die Dokumentation für solrj neu ist, müssen Sie möglicherweise erste Versionen dieser verwandten Themen erstellen.

Fügen Sie Dokumente zu Solr hinzu, indem Sie SolrJ verwenden

Wenn wir ein Schema haben, das so aussieht:

<field name="id" type="string" indexed="true" stored="true" required="true" /> 

<field name="name" type="string" indexed="true" stored="true" />
 

Der solrj-Code zum Hinzufügen von Inhalten zu Solr sieht folgendermaßen aus:

 package com.stackoverflow.solrj.example;

import java.io.IOException;
import java.util.ArrayList;
import java.util.Collection;

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 SolrJIndexing {

    private final static String SOLR_URL = "http://localhost:8983/solr/mycollection";

    public static void main(String[] args) {
        SolrClient solrClient = new HttpSolrClient.Builder(SOLR_URL).build();
        SolrInputDocument document1 = getDocument(1, "Document example 1");
        SolrInputDocument document2 = getDocument(2, "Document example 2");
        Collection<SolrInputDocument> docs = new ArrayList<SolrInputDocument>();
        docs.add(document1);
        docs.add(document2);
        try {
            solrClient.add(docs);
            solrClient.commit();
        } catch (SolrServerException | IOException e) {
            e.printStackTrace();
        }
    }

    private static SolrInputDocument getDocument(int id, String name) {
        SolrInputDocument document = new SolrInputDocument();
        document.addField("id", id);
        document.addField("name", name);
        return document;
    }

}
 

Init SolrJ-Client für lokalen STANDALONE-Cluster im Vergleich zu Remote-CLOUD mit Kerberos

Praktische Methode zum Initialisieren des SolrJ-Clients basierend auf Konfigurationseigenschaften;

private void initSolrClient() {
    if (conf.kerberos().isEnabled()) {
        System.setProperty("java.security.auth.login.config", conf.kerberos().confPath());
        HttpClientUtil.addConfigurer(new Krb5HttpClientConfigurer());
    }
    if (conf.solr().getMode() == SolrProperties.Mode.STANDALONE) {
        this.solr = new HttpSolrClient.Builder(conf.solr().url()).build();
    }
    if (conf.solr().getMode() == SolrProperties.Mode.CLOUD) {
        this.solr = new CloudSolrClient.Builder().withZkHost(conf.solr().zookeepers()).build();
    }
}
 

FERNBEDIENUNG mit Kerberos:

solr.conf.mode=CLOUD
solr.conf.zookepers=zookeeper-01.mydomain.com:2181,zookeeper-02.mydomain.com:2181,zookeeper-03.mydomain.com:2181/solr
kerberos.enabled=true
kerberos.confPath=/my/path/to/krb5/jaas-client.conf
 

LOKALE Entwicklung:

solr.conf.mode=STANDALONE
solr.conf.url=http://localhost:8983/solr
kerberos.enabled=false
 

Installation oder Setup

SolrJ ist seit Solr 1.x Teil der Solr-Distribution. Die neueste Solr-Version kann hier heruntergeladen werden . Von Solr-6.3.0, der neuesten Version, müssen wir die folgenden Bibliotheken herunterladen und sie unserem Buildpfad hinzufügen: / dist / apache-solr-solrj- .jar / dist / solrj-lib

Sobald wir fertig sind, ist SolrJ bereit, mit unserer Solr-Instanz zu kommunizieren. Im folgenden Beispiel wird gezeigt, wie Sie mit SolrJ Inhalte abfragen oder zu Solr hinzufügen.

Frage Solr mit SolrJ

Wenn Sie im vorherigen Beispiel erfolgreich Dokumente zu Solr hinzugefügt haben, können Sie sie jetzt auf folgende Weise abrufen:

package com.stackoverflow.solrj.example;

import java.io.IOException;
import java.util.Iterator;

import org.apache.solr.client.solrj.SolrClient;
import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.impl.HttpSolrClient;
import org.apache.solr.client.solrj.response.QueryResponse;
import org.apache.solr.common.SolrDocument;
import org.apache.solr.common.SolrDocumentList;

public class SolrJQueryExample {

    private final static String SOLR_URL = "http://localhost:8983/solr/mycollection";

    public static void main(String[] args) throws SolrServerException, IOException {

        SolrClient solrClient = new HttpSolrClient.Builder(SOLR_URL).build();
        SolrQuery solrQuery = new SolrQuery();
        solrQuery.setQuery("example");
        solrQuery.setStart(0);
        solrQuery.setRows(10);

        QueryResponse queryResponse = solrClient.query(solrQuery);
        SolrDocumentList solrDocs = queryResponse.getResults();
        Iterator<SolrDocument> iterator = solrDocs.iterator();
        while (iterator.hasNext()) {
            SolrDocument solrDocument = iterator.next();
            String docId = (String) solrDocument.getFieldValue("id");
            String docName = (String) solrDocument.getFieldValue("name");
            System.out.println("Document " + docId + ": " + docName);
        }

    }
}