Verbindung mit einer externen Anwendung herstellen
Ihre Anwendungen und Treiber verwenden Verbindungszeichenfolgen, um eine Verbindung zu IBM Cloud® Databases for Elasticsearch herzustellen. Alle Bereitstellungen verfügen über spezielle Verbindungszeichenfolgen für Treiber und Anwendungen. Verbindungszeichenfolgen werden im Bereich Endpunkte auf der Übersichtsseite Ihrer Bereitstellung angezeigt und können auch über das Cloud-Datenbank-CLI-Plug-in und die API abgerufen werden.
Die Verbindungszeichenfolgen können von jedem der Anmeldeinformationen verwendet werden, die Sie in Ihrer Einrichtung erstellen. Sie können zwar den Benutzer mit Administratorberechtigung für alle Verbindungen und Anwendungen verwenden, es kann jedoch sinnvoller sein, Benutzer speziell für die Anwendungen zu erstellen, zu denen diese eine Verbindung herstellen möchten. Weitere Informationen finden Sie unter Erhalten von Verbindungsstrings.
Verbindung mit Treiber für Sprache herstellen
Alle Informationen, die ein Treiber benötigt, um eine Verbindung zu Ihrer Bereitstellung herzustellen, befinden sich im Abschnitt "https" eines Berechtigungsnachweises, der auf der Seite Dienstberechtigungsnachweise erstellt wurde. Die Tabelle enthält eine Aufgliederung zu Referenzzwecken.
| Feldname | Index | Beschreibung |
|---|---|---|
Type |
Art der Verbindung - bei Elasticsearch ist es "uri". | |
Scheme |
Schema für einen URI - für Elasticsearch ist es "https". | |
Path |
Pfad für eine uri. | |
Authentication |
Username |
Der Benutzername, den Sie zum Herstellen einer Verbindung verwenden |
Authentication |
Password |
Ein Passwort für den Benutzer - könnte als $PASSWORD angezeigt werden. |
Authentication |
Method |
Gibt an, wie die Authentifizierung erfolgt; die 'direkte' Authentifizierung wird vom Treiber abgewickelt |
Hosts |
0... |
Hostname und Port, zu denen die Verbindung hergestellt werden soll. |
Composed |
0... |
Ein URI, der Schema, Authentifizierung, Host und Pfad kombiniert. |
Certificate |
Name |
Der zugewiesene Name für das diensteigene Zertifikat für die Datenbankbereitstellung. |
Certificate |
Basis 64 | Eine Version des Zertifikats in Base64-Codierung |
0...Gibt an, dass es möglicherweise weitere derartige Einträge in einem Array gibt.
Viele Elasticsearch-Treiber sind in der Lage, eine Verbindung zu Ihrer Bereitstellung herzustellen, wenn die URI-formatierte Verbindungszeichenfolge aus dem Feld 'Composed' der Verbindungsinformationen angegeben wird. Sehen Sie sich das folgende Beispiel an:
https://admin:$PASSWORD@d5eeee66-5bc4-498a-b73b-1307848f1eac.8f7bfd8f3faa4218aec56e069eb46187.databases.appdomain.cloud:31821
Im folgenden Beispiel wird Java für die Verbindung verwendet.
import io.searchbox.client.JestClientFactory;
import io.searchbox.client.JestResult;
import io.searchbox.client.config.HttpClientConfig;
import io.searchbox.client.JestClient;
import io.searchbox.cluster.Health;
import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
import org.apache.http.ssl.SSLContextBuilder;
import javax.net.ssl.SSLContext;
import java.io.File;
import java.security.*;
import java.security.cert.CertificateException;
import java.io.IOException;
public class ESConnect {
public static void main(String[] args) {
// Add CA cert to truststore using something like:
// keytool -import -alias mycert -file /path/to/cert -keystore ./mycert -storetype pkcs12 -storepass mysecret
// and use the path of the keystore below
File truststore = new File("/Users/code/java-example/icdcerts");
try {
// use your secret and add the variable containing the truststore that you created above with the secret as a CharArray
SSLContext sslContext = new SSLContextBuilder().loadTrustMaterial(truststore, "mysecret".toCharArray()).build();
SSLConnectionSocketFactory sslSocketFactory = new SSLConnectionSocketFactory(sslContext);
// set up a Jest factory
JestClientFactory factory = new JestClientFactory();
//configure and build Jest HTTP client with IBM Cloud Databases for Elasticsearch connection strings
factory.setHttpClientConfig(
// add the Elasticsearch host and port
new HttpClientConfig.Builder("https://60d1b41b-2478-4767-9fc0-d99b1d00b6d1.bkvfu0nd0m8k95k94ujg.databases.appdomain.cloud:31347")
.multiThreaded(true)
// Add the credentials username and password
.defaultCredentials("admin", "mypassword")
.sslSocketFactory(sslSocketFactory)
.build());
// create a JestClient
JestClient client = factory.getObject();
// create the call for the cluster health
Health health = new Health.Builder().build();
// get the cluster health as a JestResult
JestResult result = client.execute(health);
// print out the cluster's health
System.out.printf("\n\n<------ CLUSTER HEALTH ------>\n%s\n\n", result.getJsonObject());
// shutdown the connection
client.close();
} catch (IOException | KeyStoreException | NoSuchAlgorithmException | KeyManagementException | CertificateException e) {
e.printStackTrace();
}
}
}
Im folgenden Beispiel wird die Python Bibliothek elasticsearch-py für die Verbindung verwendet.
from elasticsearch import Elasticsearch
from ssl import create_default_context
context = create_default_context(cafile="path/to/cert.pem")
es = Elasticsearch(
['60d1b41b-2478-4767-9fc0-d99b1d00b6d1.bkvfu0nd0m8k95k94ujg.databases.appdomain.cloud'],
http_auth=('admin', 'password'),
port='31347',
ssl_context=context
)
health = es.cluster.health()
print(health)
Unterstützung für Treiber-TLS und diensteigene Zertifikate
Alle Verbindungen zu Databases for Elasticsearch sind für TLS 1.2 aktiviert; daher muss der Treiber, den Sie für die Verbindung verwenden, die Verschlüsselung unterstützen. Ihre Bereitstellung umfasst auch ein diensteigenes Zertifikat, damit der Treiber den Server bei der Verbindung verifizieren kann.
Weitere Informationen finden Sie unter Cloud Databases Zertifikate-Häufig gestellte Fragen.
Verwendung des diensteigenen Zertifikats
- Kopieren Sie die Zertifikatsinformationen aus dem Bedienfeld Endpunkte oder aus dem Feld Base64 der Verbindungsinformationen der Dienstanmeldeinformationen.
- Decodieren Sie bei Bedarf die Base64-Zeichenfolge in Text.
- Speichern Sie das Zertifikat in einer Datei. (Sie können den vorgegebenen Namen übernehmen oder einen eigenen Dateinamen angeben. )
- Geben Sie gegenüber dem Treiber oder Client den Pfad zum Zertifikat an.
CLI-Plugin-Unterstützung für das diensteigene Zertifikat
Sie können das decodierte Zertifikat für Ihre Bereitstellung mit dem CLI-Plugin mit dem Befehl ibmcloud cdb deployment-cacert "your-service-name" anzeigen. Dadurch werden in Base64 codierte Zeichenfolgen in Text decodiert.
Kopieren Sie die Ausgabe des Befehls, speichern Sie sie in einer Datei und geben Sie den Pfad der Datei für den Treiber an.
Andere Treiber
Elasticsearch verfügt über ein breites Spektrum an Sprachtreibern. Die Tabelle deckt die gängigsten Sprachen ab.
| Sprache | Treiber | Dokumentation |
|---|---|---|
| Node | elasticsearch-js |
Link |
| Ruby | elasticsearch-ruby |
Link |
| Ruby on Rails | elasticsearch-rails | Link |
| Python | elasticsearch-py |
Link |
| Java | Jest |
Link |
| Los | elastic |
Link |