Externer Searchlayer

Externer Searchlayer

Der klassische Searchlayer wird mit B2B ausgeliefert. Der externe Searchlayer hingegen funktioniert hingegen über einen eigenständigen Microservice, der von der B2B bei Index-Operationen per REST angefragt wird. Der entsprechende Microservice kapselt vollständig den oder die verwendete(n) Index(e) und Index-Technologien von der B2B ab. Die B2B leitet Anfragen an diesen weiter und stellt die Ergebnisse dar.

Damit können kundenspezifische Lösungen leichter und schneller umgesetzt werden, weil die B2B nicht angepasst werden muss. Die B2B kann über diese Implementierung i.A. auch jede Index-Technologie unterstützen, sofern ein Adpater-Microservice dazu existiert!

Konfiguration

Die Konfiguration der einzelnen Indizes erfolgt getrennt voneinander. Das ermöglicht die Nutzung verschiedener Indexlösungen für verschiedene Indizes. Einzelne Indizes können auf den externen Searchlayer umgestellt werden, während die restlichen weiterhin über den klassischen Searchlayer abgefragt werden.

Die Konfiguration erfolgt in der Extension EXTERNAL_SEARCH_LAYER_CONFIGURATION_<indexname>, wobei <indexname> ein bekannter Indextyp wie “FULLTEXT”, “CCM” oder “ARCHIVE” ist. Zum Beispiel EXTERNAL_SEARCH_LAYER_CONFIGURATION_FULLTEXT.

Property Beispiel Beschreibung
INDEX_SERVICE_URL http://solr-lucene-readonly-fulltext:8080/solr-lucene-readonly URL des Services. Notwendige Eigenschaft. Wenn diese nicht gesetzt ist, wird der Index über den klassischen Searchlayer abgefragt.
TIMEOUT_IN_MILLISECONDS 10000 Timeout in Millisekunden. Optional. Standardwert: 300.000 (5 Minuten)

Beispiel

INDEX_SERVICE_URL=http://solr-lucene-readonly-fulltext:8080/solr-lucene-readonly
TIMEOUT_IN_MILLISECONDS=30000

Implementierungen

Bislang existiert nur eine Implementierung: “solr-lucene-readonly”.

Die Implementierung weiterer individueller Lösungen ist leicht möglich. Gerne wenden Sie sich dazu an unsere Beratungs- oder Supportabteilung!

solr-lucene-readonly

Diese Implementierung ist für Indizes gedacht, die sowohl in Solr als auch in Lucene vorliegen. Der Lucene-Teil wird nur lesend benutzt, während Solr sowohl lesend als auch schreibend genutzt wird.

  • Such- und Zähloperationen werden in Lucene und Solr durchgeführt.
  • Hinzufügen, Aktualisieren und Löschen werden nur in Solr durchgeführt. Das Aktualisieren eines nicht existierenden Dokuments erstellt ein neues Dokument in Solr.

Konfiguration

Die Konfiguration erfolgt in der Datei application.yml. Folgende Eigenschaften können konfiguriert werden:

Eigenschaft Beschreibung Beispiel Standardwert
index.type Indextyp CCM – (notwendig)
solr.urls Solr Cluster URLs, mehrere Werte erlaubt - http://solr1:8983/solr
- http://solr2:8983/solr
– (notwendig)
solr.collection Solr Collection Name ccm – (notwendig)
solr.page-size Seitengröße für Solr-Abfragen 100000 500000
solr.timeout-in-ms Timeout für Solr-Abfragen in Millisekunden 60000 10 Minuten

Beispiel der application.yml

index:
  # Possible values: CCM, FULLTEXT, ARCHIVE, SYSTEMSPLIT_METERINGPOINT, SYSTEMSPLIT_METERINGPOINT_TEMP, SYSTEMSPLIT_RESPONSE
  type: CCM

# Solr configuration
solr:
  urls:
    - http://solr1:8983/solr
    - http://solr2:8983/solr
    - http://solr3:8983/solr
  collection: ccm
  page-size: 50000
  timeout-in-ms: 600000

Ausführung

Der Service kann nur als Docker-Container ausgeführt werden.

Sie müssen folgende Dateien mounten:

  • application.yml nach /app/application.yml
  • Lucene-Index nach /app/lucene-index

Die konfigurierten Solr-URLs müssen während des Start-ups vom Docker-Container aus erreichbar sein, sonst wird die Anwendung nicht starten.

Der REST-Service ist erreichbar unter dem Port 8080 und dem URL-Pfad solr-lucene-readonly, z.B. http://solr-lucene-readonly-ccm:8080/solr-lucene-readonly. Diese URL muss in der B2B-Konfiguration eingetragen werden.

Beispiel der docker-compose.yml


version: '3.8'
name: solr-lucene-readonly

networks:
default:
name: b2b

services:
solr-lucene-readonly-ccm:
user: root
image: docker-nob-erp.next-level-apps.com/aep-b2b-external-searchlayer-solr-lucene-readonly:2023-05-15
volumes:
- ./application-ccm.yml:/app/application.yml
- /index/index-ccm:/app/lucene-index
ports:
- "8085:8080"

View Me   Edit Me