Externer Searchlayer
Der klassische Searchlayer wird mit B2B ausgeliefert. Der externe Searchlayer 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 Adapter-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"