中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當前位置: 首頁 > news >正文

阿里云做網(wǎng)站經(jīng)費seo優(yōu)化網(wǎng)頁

阿里云做網(wǎng)站經(jīng)費,seo優(yōu)化網(wǎng)頁,泉州疫情最新通報,哈爾濱seo優(yōu)化排名免費咨詢提示:文章寫完后,目錄可以自動生成,如何生成可參考右邊的幫助文檔 文章目錄 SpringBoot整合Elasticsearch1.建立項目2.Maven 依賴[ES 官方網(wǎng)站:https://www.elastic.co/guide/en/elasticsearch/client/java-rest/6.8/index.html](…

提示:文章寫完后,目錄可以自動生成,如何生成可參考右邊的幫助文檔

文章目錄

  • SpringBoot整合Elasticsearch
    • 1.建立項目
    • 2.Maven 依賴
        • [ES 官方網(wǎng)站:https://www.elastic.co/guide/en/elasticsearch/client/java-rest/6.8/index.html](https://www.elastic.co/guide/en/elasticsearch/client/java-rest/6.8/index.html)
    • 3. pom配置
    • 4.證書文件elastic-certificates.p12 拷貝
        • 證書文件elastic-certificates.p12需拷貝到所有ES節(jié)點對應的目錄下
    • 5.配置類 ElasticsearchConfig
      • SecureRestClientConfig
    • 6.nacos配置參數(shù)
    • 7.測試
      • 1.TransportClient
      • 2.ElasticsearchTemplate
      • 3.RestHighLevelClient
      • 4.ElasticsearchRestTemplate


SpringBoot整合Elasticsearch

1.建立項目

在這里插入圖片描述
在這里插入圖片描述

2.Maven 依賴

進入到 ES 官方網(wǎng)站

ES 官方網(wǎng)站:https://www.elastic.co/guide/en/elasticsearch/client/java-rest/6.8/index.html

在這里插入圖片描述

  • 可以看到有低級和 高級的 Rest Client

在這里插入圖片描述

3. pom配置

基于 springboot 2.1.7.RELEASE

<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope><exclusions><exclusion><groupId>org.junit.vintage</groupId><artifactId>junit-vintage-engine</artifactId></exclusion></exclusions></dependency><!-- ES --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-elasticsearch</artifactId></dependency><dependency><groupId>org.springframework.data</groupId><artifactId>spring-data-elasticsearch</artifactId><version>3.2.9.RELEASE</version></dependency><dependency><groupId>org.elasticsearch.client</groupId><artifactId>elasticsearch-rest-high-level-client</artifactId><version>6.8.23</version><exclusions><exclusion><groupId>org.elasticsearch.client</groupId><artifactId>transport</artifactId></exclusion><exclusion><groupId>org.elasticsearch.client</groupId><artifactId>elasticsearch-rest-client</artifactId></exclusion><exclusion><groupId>org.elasticsearch</groupId><artifactId>elasticsearch</artifactId></exclusion></exclusions></dependency><dependency><groupId>org.elasticsearch.client</groupId><artifactId>transport</artifactId><version>6.8.23</version></dependency><dependency><groupId>org.elasticsearch.client</groupId><artifactId>elasticsearch-rest-client</artifactId><version>6.8.23</version></dependency><dependency><groupId>org.elasticsearch</groupId><artifactId>elasticsearch</artifactId><version>6.8.23</version></dependency><dependency><groupId>org.elasticsearch.plugin</groupId><artifactId>transport-netty4-client</artifactId><version>6.8.23</version></dependency><!-- Elasticsearch客戶端依賴版本升級到6.8.32 新增x-pack依賴--><dependency><groupId>org.elasticsearch.client</groupId><artifactId>x-pack-transport</artifactId><version>6.8.23</version></dependency>

4.證書文件elastic-certificates.p12 拷貝

證書文件elastic-certificates.p12需拷貝到所有ES節(jié)點對應的目錄下
  • 注意:只需創(chuàng)建一次證書并將其復制到所有節(jié)點。

在這里插入圖片描述

5.配置類 ElasticsearchConfig

支持x-pack 密碼驗證

/*** ES 配置 -----Elasticsearch 6.8.23* 通過實現(xiàn)配置配,初始化安全Elasticsearch客戶端對象,包括ElasticsearchTemplate和RestHighLevelClient兩者客戶端類* 支持x-pack 密碼驗證*/@Slf4j
@Configuration
public class SecureElasticsearchConfig {//用戶名 elastic@Value("${elasticsearch.xpack.username}")private String xpackUsername = "elastic";//用戶密碼@Value("${elasticsearch.xpack.password}")private String xpackrPassword;//證書路徑  "/home/data/es"@Value("${elasticsearch.xpack.kspath}")private String certPath;//證書密碼  ""@Value("${elasticsearch.xpack.kspwd}")private String certPassword;//集群名@Value("${elasticsearch.master.cluster-name}")private String masterClusterName;//節(jié)點名@Value("${elasticsearch.master.clusterNodes}")private String clusterNodes;//ip@Value("${elasticsearch.master.address}")private String masterAddress;//端口@Value("${elasticsearch.master.port}")private Integer masterPort;//    // es 連接超時時間
//    private int connectTimeOut;
//    // es socket 連接超時時間
//    private int socketTimeOut;
//    // es 請求超時時間
//    private int connectionRequestTimeOut;
//    // es 最大連接數(shù)
//    private int maxConnectNum;
//    // es 每個路由的最大連接數(shù)
//    private int maxConnectNumPerRoute;/***集群配置*/private Settings settings() {Settings.Builder builder = Settings.builder();//基礎配置builder.put("cluster.name", masterClusterName);builder.put("xpack.security.user", xpackUsername+ ":" + xpackrPassword);// Keystore 配置builder.put("xpack.security.transport.ssl.keystore.path", certPath);builder.put("xpack.security.transport.ssl.keystore.password", certPassword);// Truststore 配置builder.put("xpack.security.transport.ssl.truststore.path", certPath);builder.put("xpack.security.transport.ssl.truststore.password", certPassword);// 驗證模式配置builder.put("xpack.security.transport.ssl.verification_mode", "certificate");// 啟用 X-Pack 安全功能builder.put("xpack.security.enabled", true);builder.put("xpack.security.transport.ssl.enabled", true);return builder.build();}/*** 初始化安全TransportClient類*/@Beanpublic TransportClient transportClient() throws Exception {//本地測試用// certPath="D:\\cdms\\es\\elastic-certificates.p12";log.info(">>>>>>>>>>> SecureElasticsearchConfig TransportClient 開始初始化");Settings settings = settings();PreBuiltXPackTransportClient client = new PreBuiltXPackTransportClient(settings);client.addTransportAddress(new TransportAddress(InetAddress.getByName(masterAddress), masterPort));return client;}/***初始化安全ElasticsearchTemplate類* 基于 spring-boot-starter-data*/@Beanpublic ElasticsearchTemplate elasticsearchTemplate(@Autowired TransportClient transportClient) throws Exception {log.info(">>>>>>>>>>> SecureElasticsearchConfig ElasticsearchTemplate 開始初始化");ElasticsearchTemplate secureElasticsearchTemplate;try {secureElasticsearchTemplate = new ElasticsearchTemplate(transportClient);return secureElasticsearchTemplate;} catch (Exception e) {log.error("SecureElasticsearchConfig  初始化ElasticsearchTemplate報錯: ", e.getMessage());throw e;}}/*** 初始化安全RestHighLevelClient類* 只支持http  端口: 9200*/@Beanpublic RestHighLevelClient restHighLevelClient() {log.info(">>>>>>>>>>> SecureElasticsearchConfig RestHighLevelClient 開始初始化");final CredentialsProvider credentialsProvider = new BasicCredentialsProvider();credentialsProvider.setCredentials(AuthScope.ANY,new UsernamePasswordCredentials(xpackUsername, xpackrPassword));RestClientBuilder builder = RestClient.builder(new HttpHost(masterAddress,9200)).setHttpClientConfigCallback(new RestClientBuilder.HttpClientConfigCallback() {@Overridepublic HttpAsyncClientBuilder customizeHttpClient(HttpAsyncClientBuilder httpAsyncClientBuilder) {return httpAsyncClientBuilder.setDefaultCredentialsProvider(credentialsProvider);}});RestHighLevelClient client = new RestHighLevelClient(builder);//        // 連接延時配置
//        builder.setRequestConfigCallback(requestConfigBuilder -> {
//            requestConfigBuilder.setConnectTimeout(connectTimeOut);
//            requestConfigBuilder.setSocketTimeout(socketTimeOut);
//            requestConfigBuilder.setConnectionRequestTimeout(connectionRequestTimeOut);
//            return requestConfigBuilder;
//        });
//        // 連接數(shù)配置
//        builder.setHttpClientConfigCallback(httpClientBuilder -> {
//                    httpClientBuilder.setMaxConnTotal(maxConnectNum);
//                    httpClientBuilder.setMaxConnPerRoute(maxConnectNumPerRoute);
//                    httpClientBuilder.setDefaultCredentialsProvider(credentialsProvider);
//                    return httpClientBuilder;
//        });return client;}/***初始化安全ElasticsearchRestTemplate類* 基于 spring-boot-starter-data*/@BeanElasticsearchRestTemplate elasticsearchRestTemplate(@Autowired RestHighLevelClient restHighLevelClient) {log.info(">>>>>>>>>>> SecureElasticsearchConfig ElasticsearchRestTemplate 開始初始化");return new ElasticsearchRestTemplate(restHighLevelClient);}}

SecureRestClientConfig

import lombok.Setter;
import lombok.extern.slf4j.Slf4j;
import org.apache.http.HttpHost;
import org.apache.http.auth.AuthScope;
import org.apache.http.auth.UsernamePasswordCredentials;
import org.apache.http.client.CredentialsProvider;
import org.apache.http.impl.client.BasicCredentialsProvider;
import org.apache.http.impl.nio.client.HttpAsyncClientBuilder;
import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestClientBuilder;
import org.elasticsearch.client.RestHighLevelClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.elasticsearch.core.ElasticsearchRestTemplate;import java.util.Arrays;/*** ES 配置 -----Elasticsearch 6.8.23* 通過實現(xiàn)配置配,初始化安全 RestHighLevelClient,ElasticsearchRestTemplate客戶端類* 支持x-pack 密碼驗證*/
@Slf4j
@Configuration
@ConfigurationProperties(prefix = "spring.elasticsearch.rest")
public class SecureRestClientConfig {//端口 ip@Setterprivate String[] hosts = new String[]{};//用戶名 elastic@Setterprivate String xpackusername;//用戶密碼@Setterprivate String xpackpassword;//    // es 連接超時時間
//    private int connectTimeOut;
//    // es socket 連接超時時間
//    private int socketTimeOut;
//    // es 請求超時時間
//    private int connectionRequestTimeOut;
//    // es 最大連接數(shù)
//    private int maxConnectNum;
//    // es 每個路由的最大連接數(shù)
//    private int maxConnectNumPerRoute;/*** 初始化安全RestHighLevelClient類* 只支持http  端口: 9200*/@Beanpublic RestHighLevelClient restHighLevelClient() {log.info(">>>>>>>>>>> RestClientConfig RestHighLevelClient 開始初始化");HttpHost[] httpHosts = Arrays.stream(hosts).map(x -> {String[] hostInfo = x.split(":");return new HttpHost(hostInfo[0], Integer.parseInt(hostInfo[1]));}).toArray(HttpHost[]::new);log.info("elasticsearch hosts: ", Arrays.toString(httpHosts));final CredentialsProvider credentialsProvider = new BasicCredentialsProvider();credentialsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials(xpackusername, xpackpassword));RestClientBuilder builder = null;try {builder = RestClient.builder(httpHosts).setHttpClientConfigCallback(new RestClientBuilder.HttpClientConfigCallback() {@Overridepublic HttpAsyncClientBuilder customizeHttpClient(HttpAsyncClientBuilder httpAsyncClientBuilder) {return httpAsyncClientBuilder.setDefaultCredentialsProvider(credentialsProvider);}});} catch (Exception e) {log.error("RestClientConfig  初始化RestHighLevelClient報錯: ", e.getMessage());throw new RuntimeException(e);}//        // 連接延時配置
//        builder.setRequestConfigCallback(requestConfigBuilder -> {
//            requestConfigBuilder.setConnectTimeout(connectTimeOut);
//            requestConfigBuilder.setSocketTimeout(socketTimeOut);
//            requestConfigBuilder.setConnectionRequestTimeout(connectionRequestTimeOut);
//            return requestConfigBuilder;
//        });
//        // 連接數(shù)配置
//        builder.setHttpClientConfigCallback(httpClientBuilder -> {
//                    httpClientBuilder.setMaxConnTotal(maxConnectNum);
//                    httpClientBuilder.setMaxConnPerRoute(maxConnectNumPerRoute);
//                    httpClientBuilder.setDefaultCredentialsProvider(credentialsProvider);
//                    return httpClientBuilder;
//        });RestHighLevelClient client = new RestHighLevelClient(builder);return client;}@Bean(name = {"elasticsearchOperations", "elasticsearchTemplate"})ElasticsearchRestTemplate elasticsearchRestTemplate(@Autowired RestHighLevelClient restHighLevelClient) {return new ElasticsearchRestTemplate(restHighLevelClient);}
}

6.nacos配置參數(shù)

elasticsearch:xpack:username: elasticpassword: escdmskspath: /home/data/eskspwd: master:cluster-name: gz-java-test-laasclusterNodes: master-test-laasaddress: 192.168.2.89port: 9300

7.測試

1.TransportClient

 @Autowiredprivate  TransportClient transportClient;@Testpublic void createIndex_transportClient() {String indexName="lass_test_transportclient";try {CreateIndexRequest request = new CreateIndexRequest(indexName);// 可以在此處添加更多設置,例如映射 (mapping) 和設置 (settings)CreateIndexResponse response = transportClient.admin().indices().create(request).actionGet();if (response.isAcknowledged()) {System.out.println("Index created successfully: " + indexName);} else {System.out.println("Index creation failed: " + indexName);}} catch (Exception e) {System.err.println("Error creating index: " + e.getMessage());}}@Testpublic void addDocuments_transportClient() {String indexName = "lass_test_transportclient";try {String json1 = "{" +"\"user\":\"kimchy\"," +"\"postDate\":\"2013-01-30\"," +"\"message\":\"trying out Elasticsearch\"" +"}";IndexResponse response1 = transportClient.prepareIndex(indexName, "_doc").setSource(json1, XContentType.JSON).get();//            if (response1.status() == RestStatus.CREATED) {
//                System.out.println("Document 1 indexed successfully.");
//            } else {
//                System.out.println("Failed to index Document 1.");
//            }String json2 = "{" +"\"user\":\"Tom\"," +"\"postDate\":\"2024-01-30\"," +"\"message\":\"lass升級 transportClient \"" +"}";transportClient.prepareIndex(indexName, "_doc").setSource(json2, XContentType.JSON).get();} catch (Exception e) {System.err.println("Error adding documents: " + e.getMessage());}}@Testpublic void deleteIndex_transportClient() {String indexName = "lass_test_transportclient";try {DeleteIndexRequest request = new DeleteIndexRequest(indexName);AcknowledgedResponse response = transportClient.admin().indices().delete(request).actionGet();if (response.isAcknowledged()) {System.out.println("Index deleted successfully: " + indexName);} else {System.out.println("Failed to delete index: " + indexName);}} catch (Exception e) {System.err.println("Error deleting index: " + e.getMessage());}}
GET lass_test_transportclient/_search
{"query":{"match_all" : {}}
}

在這里插入圖片描述

2.ElasticsearchTemplate

@Data
@AllArgsConstructor
@NoArgsConstructor
@Accessors(chain = true)
@Document(indexName = "lass_test_people",type = "_doc",shards = 1,replicas = 1)
public class People {@Idprivate String id;// 整個name不被分詞,切不創(chuàng)建索引// Keyword表示不被分詞@Field(type= FieldType.Keyword,index = false)private String name;// address被ik分詞// Text類型的屬性才能被分詞@Field(type = FieldType.Text)private String address;@Field(type = FieldType.Long,index = false)private int age;}
 @Autowiredprivate ElasticsearchTemplate elasticsearchTemplate;@Testpublic void createIndex_elasticsearchTemplate() {//根據(jù)實體類創(chuàng)建索引,boolean result1 = elasticsearchTemplate.createIndex(People.class);System.out.println(result1);//將索引放到軟件里面boolean results = elasticsearchTemplate.putMapping(People.class);}@Testpublic void addDocuments_elasticsearchTemplate() {People peo = new People();peo.setId("123");peo.setName("張三");peo.setAddress("北京市海淀區(qū)回龍觀東大街");peo.setAge(18);IndexQuery query = new IndexQuery();query.setObject(peo);String result = elasticsearchTemplate.index(query);System.out.println(result);}@Testpublic void bulk(){List<IndexQuery> list = new ArrayList<>();// IndexQuery多行寫法IndexQuery indexQuery = new IndexQuery();indexQuery.setObject(new People("1", "王五", "北京東城", 12));list.add(indexQuery);// IndexQuery 連綴寫法list.add(new IndexQueryBuilder().withObject(new People("2", "趙六", "北京西城", 13)).build());list.add(new IndexQueryBuilder().withObject(new People("3", "吳七", "北京昌平", 14)).build());elasticsearchTemplate.bulkIndex(list);}@Testpublic void deletee_elasticsearchTemplate() {boolean result = elasticsearchTemplate.deleteIndex(People.class);System.out.println(result);}

在這里插入圖片描述

3.RestHighLevelClient

@Data
@AllArgsConstructor
@NoArgsConstructor
@Accessors(chain = true)
@Document(indexName = "lass_test_student",type = AudienceEsConst.DOC, createIndex = false, useServerConfiguration = true)
public class Student {@Idprivate String id;// 整個name不被分詞,切不創(chuàng)建索引// Keyword表示不被分詞@Field(type= FieldType.Keyword,index = false)private String name;// address被ik分詞// Text類型的屬性才能被分詞@Field(type = FieldType.Text)private String address;@Field(type = FieldType.Long,index = false)private int age;}
 @Autowiredprivate RestHighLevelClient restHighLevelClient;@Testpublic void createIndex_restHighLevelClient() throws IOException {String indexName = "lass_test_resthighlevelclient";XContentBuilder builder = XContentFactory.jsonBuilder();builder.startObject();{builder.field("user", "zhangSan");builder.timeField("postDate", new Date());builder.field("message", "laas 升級 RestHighLevelClient ");}builder.endObject();IndexRequest request = new IndexRequest(indexName, "doc").source(builder);IndexResponse indexResponse = restHighLevelClient.index(request, RequestOptions.DEFAULT);if (indexResponse.status() == RestStatus.CREATED) {System.out.println("Document 1 indexed successfully.");} else {System.out.println("Failed to index Document 1.");}}@Testpublic void addDocuments_restHighLevelClient() {String indexName = "lass_test_resthighlevelclient";try {Map<String, Object> jsonMap = new HashMap<>();jsonMap.put("user", "李四");jsonMap.put("postDate", new Date());jsonMap.put("message", "laas 升級 RestHighLevelClient ");IndexRequest indexRequest = new IndexRequest(indexName,"doc").source(jsonMap);IndexResponse indexResponse = restHighLevelClient.index(indexRequest, RequestOptions.DEFAULT);if (indexResponse.status() == RestStatus.CREATED) {System.out.println("Document 1 indexed successfully.");} else {System.out.println("Failed to index Document 1.");}} catch (Exception e) {System.err.println("Error adding documents: " + e.getMessage());}}@Testpublic void deletee_restHighLevelClient() {String indexName = "lass_test_resthighlevelclient";boolean result = elasticsearchTemplate.deleteIndex(indexName);System.out.println(result);}

4.ElasticsearchRestTemplate

 @Autowiredprivate  ElasticsearchRestTemplate  restTemplate;@Testpublic void createIndex_restTemplate() {//根據(jù)實體類創(chuàng)建索引,boolean result1 = restTemplate.createIndex(Student.class);System.out.println(result1);//將索引放到軟件里面boolean results = restTemplate.putMapping(Student.class);}@Testpublic void addDocuments_restTemplate() {Student student = new Student();student.setId("123");student.setName("張三");student.setAddress("北京市海淀區(qū)回龍觀東大街");student.setAge(18);IndexQuery query = new IndexQuery();query.setObject(student);String result = restTemplate.index(query);System.out.println(result);}@Testpublic void bulk_restTemplate(){List<IndexQuery> list = new ArrayList<>();// IndexQuery多行寫法IndexQuery indexQuery = new IndexQuery();indexQuery.setObject(new Student("1", "王五", "北京東城", 12));list.add(indexQuery);// IndexQuery 連綴寫法list.add(new IndexQueryBuilder().withObject(new Student("2", "趙六", "北京西城", 13)).build());list.add(new IndexQueryBuilder().withObject(new Student("3", "吳七", "北京昌平", 14)).build());restTemplate.bulkIndex(list);}@Testpublic void deletee_restTemplate() {boolean result = restTemplate.deleteIndex(Student.class);System.out.println(result);}
http://www.risenshineclean.com/news/66143.html

相關文章:

  • 武漢做網(wǎng)站制作創(chuàng)建網(wǎng)站免費注冊
  • 阿里云搭建自己的網(wǎng)站seo崗位是什么意思
  • smarty做網(wǎng)站百度圖片搜索引擎入口
  • 手機微網(wǎng)站建設方案網(wǎng)站怎么添加外鏈
  • 網(wǎng)站定向推送怎么做關鍵詞排名零芯互聯(lián)排名
  • 深圳個人外貿(mào)網(wǎng)站建排名優(yōu)化哪家好
  • 深圳建設局網(wǎng)站天津百度整站優(yōu)化服務
  • 網(wǎng)站右側(cè) 回到頂部站長工具流量統(tǒng)計
  • 仿站 做網(wǎng)站免費推廣網(wǎng)站排行榜
  • 好用的日本ip地址seo優(yōu)化要做什么
  • 溫州網(wǎng)站推廣站建設全媒體廣告策劃營銷
  • 網(wǎng)站建設發(fā)票內(nèi)容蘇州網(wǎng)站制作開發(fā)公司
  • 惠州高端網(wǎng)站建設寵物美容師寵物美容培訓學校
  • 如何建設網(wǎng)站平臺企業(yè)seo優(yōu)化服務
  • b2b網(wǎng)站怎么做濟南網(wǎng)站優(yōu)化
  • 工信部做網(wǎng)站認證嗎杭州優(yōu)化公司多少錢
  • 企業(yè)做網(wǎng)站屬于廣告宣傳費嗎sem投放
  • 天津網(wǎng)站建設交易公司網(wǎng)站建站要多少錢
  • 網(wǎng)站名稱備案青島神馬排名優(yōu)化
  • 山東公司網(wǎng)站開發(fā)外鏈工廠 外鏈
  • wordpress怎么導入自己的phpseo網(wǎng)站優(yōu)化外包
  • 自己做網(wǎng)站需要服務器嗎google付費推廣
  • flash 網(wǎng)站頭部東莞做網(wǎng)站公司電話
  • wordpress 輪播圖插件下載惠州抖音seo
  • 網(wǎng)站 http 狀態(tài)碼返回值 301百度在線識圖查圖片
  • 怎么用自己的主機做網(wǎng)站服務器嗎企業(yè)宣傳片文案
  • 美國做ppt的網(wǎng)站有人百度看片嗎
  • 公司網(wǎng)站制作哪家公司好百度網(wǎng)站app下載
  • 做那種網(wǎng)站受歡迎網(wǎng)絡公司網(wǎng)頁設計
  • 國外網(wǎng)購網(wǎng)站十大排名seo站長常用工具