命令行通过 .deb 包安装 Elasticsearch
创建一个新用户
adduser elastic --> rust
# 添加sudo权限
# https://phoenixnap.com/kb/how-to-create-sudo-user-on-ubuntu
usermod -aG sudo elastic
groups elastic
下载Elasticsearch v8.9.0 Debian 包
https://www.elastic.co/guide/en/elasticsearch/reference/current/deb.html#install-deb
Elasticsearch: 初学者指南
https://medium.com/@animeshblog/elasticsearch-the-beginners-cookbook-1cf30f98218
快速开始
主要参考:Verifying HTTPS with a certificate fingerprint
创建 Elasticsearch Java客户端
package org.elastic.service.es;
import co.elastic.clients.elasticsearch.ElasticsearchClient;
import co.elastic.clients.json.jackson.JacksonJsonpMapper;
import co.elastic.clients.transport.ElasticsearchTransport;
import co.elastic.clients.transport.TransportUtils;
import co.elastic.clients.transport.rest_client.RestClientTransport;
import org.apache.http.HttpHost;
import org.apache.http.auth.AuthScope;
import org.apache.http.auth.UsernamePasswordCredentials;
import org.apache.http.conn.ssl.NoopHostnameVerifier;
import org.apache.http.impl.client.BasicCredentialsProvider;
import org.elasticsearch.client.RestClient;
import javax.net.ssl.SSLContext;
/**
* <a href="https://www.elastic.co/guide/en/elasticsearch/client/java-api-client/current/connecting.html#_verifying_https_with_a_certificate_fingerprint">Verifying HTTPS with a certificate fingerprint</a>
*/
public class MEElastic {
/**
* The SHA-256 fingerprint of the certificate used to sign the Elasticsearch server certificate.
* <p>
* come from <a href="https://security.stackexchange.com/a/14345">What is the actual value of a certificate fingerprint?</a>
*/
private static final String fingerprint = "2c895506b07083da7299656fa7fc4b433c3e26c03cf1a99eef23c537711b6e6e";
private static final String esUsername = "elastic";
private static final String esPassword = "k_*t_arOy7RF6EQVL-QA";
private RestClient elasticsearchRestClient() {
SSLContext sslContext = TransportUtils
.sslContextFromCaFingerprint(fingerprint);
BasicCredentialsProvider credsProv = new BasicCredentialsProvider();
credsProv.setCredentials(
AuthScope.ANY, new UsernamePasswordCredentials(esUsername, esPassword)
);
return RestClient
.builder(new HttpHost("127.0.0.1", 9200, "https"))
.setHttpClientConfigCallback(hc -> hc
.setSSLContext(sslContext)
.setDefaultCredentialsProvider(credsProv)
.setSSLHostnameVerifier(NoopHostnameVerifier.INSTANCE)
)
.build();
}
public ElasticsearchClient elasticsearchClient() {
// Create the transport and the API client
ElasticsearchTransport transport = new RestClientTransport(elasticsearchRestClient(), new JacksonJsonpMapper());
return new ElasticsearchClient(transport);
}
}
测试ElasticsearchClient
@Test
void elasticsearchClient() throws IOException {
MEElastic meElastic = new MEElastic();
ElasticsearchClient esClient = meElastic.elasticsearchClient();
GetIndexResponse rsp = esClient.indices().get(request -> request.index("test"));
System.out.println(rsp);
esClient._transport().close();
}