외부 애플리케이션 연결
애플리케이션 및 드라이버는 연결 문자열을 사용하여 IBM Cloud® Databases for Elasticsearch에 연결합니다. 각 배치에는 드라이버 및 애플리케이션용의 연결 문자열이 있습니다. 연결 문자열은 배포 개요 페이지의 엔드포인트 패널에 표시되며, 클라우드 데이터베이스 CLI 플러그인 및 API에서도 검색할 수 있습니다.
연결 문자열은 배포에서 생성한 모든 자격 증명에서 사용할 수 있습니다. 모든 연결 및 애플리케이션에 admin 사용자를 사용할 수 있지만 애플리케이션을 연결하기 위해 특별히 사용자를 작성하는 것이 좋습니다. 자세한 내용은 연결 문자열 가져오기 를 참조하세요.
언어의 드라이버를 사용하여 연결
드라이버가 배포에 연결하는 데 필요한 모든 정보는 서비스 자격 증명 페이지에서 만든 자격 증명의 "https" 섹션에 있습니다. 이 표에는 참조에 대한 분석이 포함되어 있습니다.
| 필드 이름 | 색인 | 설명 |
|---|---|---|
Type |
연결 유형 - Elasticsearch 의 경우 "uri"입니다. | |
Scheme |
URI의 스키마 - Elasticsearch 의 경우 "https"입니다. | |
Path |
URL의 경로입니다. | |
Authentication |
Username |
연결하는 데 사용하는 사용자 이름입니다. |
Authentication |
Password |
사용자의 비밀번호 - $PASSWORD 로 표시될 수 있습니다. |
Authentication |
Method |
인증이 수행되는 방법이며 "직접" 인증은 드라이버에 의해 처리됩니다. |
Hosts |
0... |
연결할 호스트 이름 및 포트입니다. |
Composed |
0... |
스키마, 인증, 호스트 및 경로를 결합한 URI입니다. |
Certificate |
Name |
데이터베이스 배포를 위한 서비스 전용 인증서에 할당된 이름입니다. |
Certificate |
Base 64 | base64 인코딩된 인증서 버전입니다. |
0...배열에 이러한 항목이 하나 이상 있을 수 있음을 표시합니다.
다수의 Elasticsearch 드라이버는 연결 정보의 "구성" 필드에 표시되는 URI 형식의 연결 문자열이 주어지면 배치에 연결할 수 있습니다. 다음 예를 참조하십시오.
https://admin:$PASSWORD@d5eeee66-5bc4-498a-b73b-1307848f1eac.8f7bfd8f3faa4218aec56e069eb46187.databases.appdomain.cloud:31821
다음 예에서는 연결하는 데 Java를 사용합니다.
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();
}
}
}
다음 예에서는 연결하는 데 Python 라이브러리 elasticsearch-py를 사용합니다.
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)
드라이버 TLS 및 서비스 전용 인증서 지원
Databases for Elasticsearch에 대한 모든 연결은 TLS 1.2이 가능하므로, 연결하기 위해 사용하는 드라이버는 암호화를 지원할 수 있어야 합니다. 또한 배포에는 서비스 전용 인증서가 함께 제공되므로 드라이버가 연결 시 서버를 확인할 수 있습니다.
자세한 정보는 Cloud Databases 인증서 FAQ를 참조하십시오.
서비스 전용 인증서 사용
- 엔드포인트 패널 또는 서비스 자격증명 연결 정보의 Base64 필드에서 인증서 정보를 복사합니다.
- 필요하면, Base64 문자열을 텍스트로 디코딩하십시오.
- 파일에 인증서를 저장하십시오. (제공되는 이름 또는 자체 파일 이름을 사용할 수 있습니다.)
- 드라이버 또는 클라이언트에 인증서의 경로를 제공하십시오.
서비스 전용 인증서를 위한 CLI 플러그인 지원
ibmcloud cdb deployment-cacert "your-service-name" 명령으로 CLI 플러그인을 사용하여 배치에 대해 디코딩된 인증서를 표시할 수 있습니다. base64를 텍스트로 디코딩합니다. 명령의 출력을 복사하여 파일에 저장하고 드라이버에 대한 파일 경로를 제공하십시오.
기타 드라이버
Elasticsearch에는 방대한 배열의 언어 드라이버가 있습니다. 다음 표에서는 몇 가지 가장 일반적인 언어 드라이버를 다룹니다.
| 언어 | 드라이버 | 문서 |
|---|---|---|
| Node | elasticsearch-js |
링크 |
| Ruby | elasticsearch-ruby |
링크 |
| Ruby on Rail | elasticsearch-rails | 링크 |
| Python | elasticsearch-py |
링크 |
| Java | Jest |
링크 |
| Go | elastic |
링크 |