nach oben
indoqa. IT-Experten, die Dinge zu nachhaltigen Lösungen entwickeln.

Solr Spring Client Integration mit Version 5.1

Da sich mit der Solr Version 5 unter anderem die Namensgebung für die Kommunikation mit einem Solr Server, von Solr Server auf Solr Client geändert hat, bieten wir für unsere Integration des Solr Client in Spring eine neue SolrClientFactory an. Für die Integration von Solr bis Version 4 bitte die SolrServerFactory verwenden. Weitere Änderungen können  unter Migration von Solr 4 nach Solr 5 nachgelesen werden.

OpenSource
Indoqa stellt seine SolrClientFactory zur Verfügung.
Download von Github

Integration der Spring basierten SolrClientFactory für die Kommunikation mit Solr Servern

Wie auch schon bei unserer SolrServerFactory werden von unserer SolrClientFactory verschiedene Präfixe in der Url unterstützt:

  • Um einen EmbeddedSolrServer zu starten: file://
  • Eine Verbindung mit einem HttpSolrClient: http://
  • Die Kommunikation mit einem Cluster mittels CloudSolrClient: cloud://

Die Konfigurationen der Url Präfixe für die SolrClientFactory im Detail

Die SolrClientFactory muss wie folgt initialisiert werden um ein Solr embedded zu starten:

SolrClientFactory solrClientFactory = new SolrClientFactory();
solrClientFactory.setUrl("file:///tmp/solr-spring-client/embedded-test-core");
solrClientFactory.setEmbeddedSolrConfigurationDir("./src/test/resources/solr/test-core");
solrClientFactory.initialize();
SolrClient solrClient = solrClientFactory.getObject();
QueryResponse response = solrClient.query(new SolrQuery("*:*"));
...

solrClient.close();
solrClientFactory.destroy();

 

Das Verzeichnis für das EmbeddedSolr wird in Zeile 2 konfiguriert. Hier haben wir ein absolutes Verzeichnis verwendet, es kann natürlich auch ein relatives angegeben werden.
In der dritten Zeile wird ein relatives Verzeichnis für die Konfiguration des Solr-Cores angenommen.
Darin befinden sich alle notwendigen Konfigurationsdateien
In diesem Verzeichnis befinden sich die notwendigen Konfigurationsdateien für einen Solr-Core:

  • solrconfig.xml
  • schema.xml

Mittels dieser Konfiguration ist es möglich einen SolrClient mit der SolrClientFactory zu erstellen. Der SolrClient kann dann für die Kommunikation mit Solr verwendet werden.
Es kann auch ein bestehender Index verwendet werden, dazu muss lediglich das übergeordnete Verzeichins des Index-Verzeichnis angegeben werden.
Mittels setEmbeddedSolrConfigurationDir wird der Pfad zu der Core Konfiguration angegeben und mit setUrl das Datenverzeichnis.

Damit man sich mit einem Solr auf einem anderen Server verbinden kann, wird die SolrClientFactory wie folgt initialisiert:

SolrClientFactory solrClientFactory = new SolrClientFactory();
solrClientFactory.setUrl("http://localhost:8983/test-core");
solrClientFactory.initialize();

...

Es muss nur die Url zu einem Solr-Core angegeben werden.

Die Konfiguration für die Kommunikation mit einem SolrCloud Cluster:

SolrClientFactory solrClientFactory = new SolrClientFactory();
solrClientFactory.setUrl("cloud://zkHost1:2181,zkHost2:2182?collection=test-collection");
solrClientFactory.initialize();

...

Die Syntax zkHost1:2181,zkHost2:2182 in der markierten Zeile gibt die zu verwendenden ZooKeeper Instanzen an. Darauf folgt der Name der Collection.
Da es für die Reduzierung des Kommunikationsaufwands mit einer SolrCloud wichtig ist, welcher Solr Node der Leader für die Collection ist, werden die ZooKeeper Instanzen aufgelistet, da bie diesen der Leaderinformation angefragt wird.

Benötigen Sie professionelle Unterstützung oder haben Sie konkrete Fragen zu Solr? Indoqa bietet Solr Consulting auf Basis jahrelanger Erfahrung in Analyse, Planung und Umsetzung von Suchanwendungen.
Indoqa Solr Experten kontaktieren

Email

Nachricht

Die Spring Integration des Solr Client mittels XML

Die Beispielkonfiguration der SolrClientFactory als Spring Bean mittels XML ist wie folgt möglich:

 ...

<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
  <property name="locations">
    <list>
      <value>app.properties</value>
    </list>
  </property>
</bean>

<bean name="solrClientFactory" class="com.indoqa.solr.spring.client.SolrClientFactory">
 <property name="url" value="${solr.url}" />
 <property name="embeddedSolrConfigurationDir" value="${solr.embedded-solr-configuration-dir}" />
</bean>

...

Die Parameter konfiguriert in der Properties Datei:

solr.url=file://./target/solr/embedded-test-core
solr.embedded-solr-configuration-dir=./src/test/resources/solr/test-core

Um die Parameter in verschiedenen Umgebungen unterschiedlich zu konfigurieren, können diese in eigene Properties ausgelagert werden.

Like it? Share it!

Leave a Reply

Your email address will not be published. Required fields are marked *