ElasticSearch Readonly / Schreibschutz aufheben

ElasticSearch Readonly / Schreibschutz aufheben

siehe auch KB-024/19: 

Wenn nicht mehr genug Plattenplatz zur Verfügung steht (Standardwert = weniger als 10%), dann schaltet sich ElasticSearch in den ReadOnly-Modus. Damit kann nichts mehr in die ElasticSearch-Datenbank geschrieben werden. Die Volltext-Jobs in der CPQueue stapeln sich.

Nach Schaffen von Plattenplatz kann der Schreibschutz wieder aufgehoben werden. Dies kann erfolgen per API-Befehl oder per CURL.EXE oder per Servicemanager.  
Bitte beachten, ab enaio 9.10 müssen Benutzer und Passwort angegeben werden. Der Benutzer ist immer elastic. Das Passwort liegt als Kopie in der Build-in.usr-Datei im ElasticSearch\config-Verzeichnis vor. 

os-interner Link zum Nachlesen (häufige Probleme): https://wiki.optimal-systems.de/pages/viewpage.action?pageId=17794697 

ReadOnly-Modus erkennen

  1. Erkennen kann man es im Services.Log des Servicemanager an der Meldung: 
    [FORBIDDEN/12/index read only / allow delete (api)]
  2. oder per API (z. Bsp. Chrome AdvancedRestClient, Postman, Sense-Client oder ...) oder per Curl.exe: 
    http://<ElasticSearch-Server>:8041/_settings 
    oder
    GET http://<ElasticSearch-Server>:8041/_settings  

    Beispiel (kein Schreibschutz, ansonsten findet man hier read_only_allow_delete): 


ReadOnly-Modus / Schreibschutz aufheben

per API (z. Bsp. Chrome AdvancedRestClient, Postman, Sense-Client oder ...): 

  1. API-Tool starten. 
  2. PUT auswählen und die URL "http://<ElasticSearch-Server>:8041/_settings" 
    Body (JSON) - Autorization aktivieren:
    {"index": {"blocks": { "read_only_allow_delete": false } } }

  3. entweder Authorisierungsdaten (Benutzer+Passwort) eintragen oder direkt ausführen und dann die Benutzerdaten eintragen.  
  4. Zur Sicherheit ElasticSearch und Servicemanager mit Indexservice neu starten. Ist das nicht möglich, mindestens den Indexservice neu laden über den Servicemanager. 


per Curl.exe: 

  1. Aus dem enaio Server-Verzeichnis curl.exe kopieren in ein Verzeichnis eigener Wahl. Empfehlung: Auf dem ElasticSearch-Server kopieren. Das macht vieles einfacher. 

    Ziel: 
  2. CMD explizit "als Administrator" starten:
    CMD
    C: 
    CD C:\PUT
    curl -X PUT --header "Content-Type: application/json" --header "Accept: */*" -d "{\"index\": {\"blocks\": {\"read_only_allow_delete\": false}}}" "http://<Elastic-IP>:8041/_settings"

    ab enaio 9.10:
    curl -X PUT --header "Content-Type: application/json" --header "Accept: */*" -d "{\"index\": {\"blocks\": {\"read_only_allow_delete\": false}}}" "http://<Elastic-IP>:8041/_settings" --user elastic:<passwort>
  3. Wenn es geklappt hat, kommt eine Meldung in Form "{"acknowledged":true}", ansonsten erscheint eine Fehlermeldung. 
  4. Zur Sicherheit ElasticSearch und Servicemanager mit Indexservice neu starten. Ist das nicht möglich, mindestens den Indexservice neu laden über den Servicemanager. 


per Servicemanager: 

  1. Servicemanager-Admin aufrufen - http://<servicemanager-server>:7273
  2. Indexservice anklicken und auf die SwaggerUI–Seite durchklicken.
  3. Hier BlueIndex-API wählen:
  4. Dann den Part "Rest client for elasticsearch API" aufklappen.
  5. Nun bei PUT "try it out" anklicken.
  6. Jetzt kann man bei Body den Befehl und bei endpoint die URL des ElasticSearch eintragen. 
  7. Mit Anklicken "Execute" wird der Befehl ausgeführt. Auf der Oberfläche gibt es danach den CURL-Befehl und einen Response-Code. Am besten im Log (services.log) prüfen, ob es geklappt hat oder nicht. 
  8. Prüfen, ob der ElasticSearch den Befehl auch verarbeitet hat anhand der Punkte bei "ReadOnly-Modus erkennen". 
  9. Zur Sicherheit ElasticSearch und Servicemanager mit Indexservice neu starten. Ist das nicht möglich, mindestens den Indexservice neu laden über den Servicemanager. 


Ab enaio 9.10 müssen Benutzer und Passwort beim Curl-Befehl als Parameter angegeben werden. Es ist ratsam ElasticSearch und Servicemanager neu zu starten. Da dies nicht immer möglich ist, ist die Empfehlung: Mindestens den Indexservice neu laden. 

Verwandte Artikel