Connessione a un'applicazione esterna
Le applicazioni e i driver utilizzano le stringhe di connessione per stabilire una connessione a IBM Cloud® Databases for Elasticsearch. Ogni distribuzione ha stringhe di connessione specificamente per driver e applicazioni. Le stringhe di connessione sono visualizzate nel pannello Endpoints della pagina Overview dell'installazione client e possono essere recuperate anche dal cloud databases CLI plug-in e dalla API.
Le stringhe di connessione possono essere utilizzate da qualsiasi credenziale creata nella propria distribuzione. Mentre è possibile utilizzare l'utente admin per tutte le connessioni e le applicazioni, potrebbe essere meglio creare utenti specificatamente per le applicazioni a cui connettersi. Per ulteriori informazioni, vedere Attribuzione delle stringhe di connessione.
Connessione con un driver di linguaggio
Tutte le informazioni di cui un driver ha bisogno per connettersi all'installazione client sono contenute nella sezione "https" di una credenziale creata nella pagina Credenziali di servizio. La tabella contiene una ripartizione per riferimento.
| Nome campo | Indice | Descrizione |
|---|---|---|
Type |
Tipo di connessione - per Elasticsearch, è "uri". | |
Scheme |
Schema per un URI - per Elasticsearch, è "https". | |
Path |
Percorso per un uri. | |
Authentication |
Username |
Il nome utente utilizzato per la connessione. |
Authentication |
Password |
Una password per l'utente - potrebbe essere visualizzata come $PASSWORD. |
Authentication |
Method |
Come avviene l'autenticazione; l'autenticazione "diretta" è gestita dal driver. |
Hosts |
0... |
Un nome di host e una porta a cui connettersi. |
Composed |
0... |
Un URI che combina Schema, Autenticazione, Host e Percorso. |
Certificate |
Name |
Il nome assegnato per il certificato proprietario del servizio per la distribuzione del database. |
Certificate |
Base 64 | Una versione codificata base64 del certificato. |
0...indica che in un array potrebbero essere presenti una o più di queste voci.
Molti driver Elasticsearch sono in grado di effettuare una connessione alla propria distribuzione quando viene fornita la stringa di connessione formattata URI trovata nel campo "composto" delle informazioni di connessione. Vedi il seguente esempio:
https://admin:$PASSWORD@d5eeee66-5bc4-498a-b73b-1307848f1eac.8f7bfd8f3faa4218aec56e069eb46187.databases.appdomain.cloud:31821
Il seguente esempio utilizza Java per connettersi.
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();
}
}
}
Il seguente esempio utilizza la libreria Python elasticsearch-py per connettersi.
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)
Driver TLS e supporto per i certificati proprietari del servizio
Tutte le connessioni a Databases for Elasticsearch sono abilitate a TLS 1.2, quindi il driver che utilizzi per la connessione deve essere in grado di supportare la crittografia. L'installazione viene fornita anche con un certificato proprietario del servizio, in modo che il driver possa verificare il server al momento della connessione.
Per ulteriori informazioni, vedi Cloud Databases Certificates FAQ.
Utilizzo del certificato proprietario del servizio
- Copiare le informazioni del certificato dal pannello Endpoints o dal campo Base64 delle informazioni di connessione della credenziale di servizio.
- Se necessario, decodificare la stringa Base64 in testo.
- Salvare il certificato in un file. (è possibile utilizzare il Nome fornito o il proprio nome file).
- Fornire il percorso al certificato al conducente o al cliente.
Supporto del plug-in CLI per il certificato proprietario del servizio
È possibile visualizzare il certificato decodificato per la propria distribuzione con il plugin CLI con il comando ibmcloud cdb deployment-cacert "your-service-name". Decodifica il base64 in testo. Copiare e salvare
l'output del comando in un file e fornire il percorso del file al guidatore.
Altri conducenti
Elasticsearch ha una vasta gamma di driver linguistici. La tabella comprende alcuni dei più comuni.
| Lingua | Unità | Documentazione |
|---|---|---|
| Node | elasticsearch-js |
Link |
| Ruby | elasticsearch-ruby |
Link |
| Ruby on Rails | elasticsearch - binari | Link |
| Python | elasticsearch-py |
Link |
| Java | Jest |
Link |
| Vai | elastic |
Link |