栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

springboot整合带账号和密码的elasticsearch

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

springboot整合带账号和密码的elasticsearch

springboot整合带账号和密码的elasticsearch 第一步引入elasticsearch依赖

   org.elasticsearch.client
   elasticsearch-rest-high-level-client

第二步:编写yml文件
elasticsearch:
  schema: http
  address: 192.168.123.165 #你的服务器地址
  connectTimeout: 5000
  socketTimeout: 5000
  connectionRequestTimeout: 5000
  maxConnectNum: 100
  maxConnectPerRoute: 100
  UserName: elastic #账号
  Password: h123456 #你的elasticsearch密码
第三步:编写config配置文件
package com.atguigu.gulimall.search.config;



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.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestClientBuilder;
import org.elasticsearch.client.RestHighLevelClient;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.util.ArrayList;
import java.util.List;

@Configuration
public class cccccc {

      
      @Value("${elasticsearch.schema:http}")
      private String schema;
      
      
      @Value("${elasticsearch.address}")
      private String address;
      
      
      @Value("${elasticsearch.connectTimeout}")
      private int connectTimeout;
      
      
      @Value("${elasticsearch.socketTimeout}")
      private int socketTimeout;
      
      
      @Value("${elasticsearch.connectionRequestTimeout}")
      private int connectionRequestTimeout;
      
      
      @Value("${elasticsearch.maxConnectNum}")
      private int maxConnectNum;
      
      
      @Value("${elasticsearch.maxConnectPerRoute}")
      private int maxConnectPerRoute;
      
      @Value("${elasticsearch.UserName}")
      private String userName;
      
      @Value("${elasticsearch.Password}")
      private String password;
   
   
   //通用设置项
   public static final RequestOptions COMMON_OPTIONS;
   static {
      RequestOptions.Builder builder = RequestOptions.DEFAULT.toBuilder();
      // builder.addHeader("Authorization", "Bearer " + TOKEN);
      // builder.setHttpAsyncResponseConsumerFactory(
      //        new HttpAsyncResponseConsumerFactory
      //                  .HeapBufferedResponseConsumerFactory(30 * 1024 * 1024 * 1024));
      COMMON_OPTIONS = builder.build();
   }
      
      // @Bean(name = "restHighLevelClient")
      @Bean
      public RestHighLevelClient restHighLevelClient() {
         // 拆分地址
         List hostLists = new ArrayList<>();
         String[] hostList = address.split(",");
         for (String addr : hostList) {
            String host = addr.split(":")[0];
            String port = addr.split(":")[1];
            hostLists.add(new HttpHost(host, Integer.parseInt(port), schema));
         }
         
         final CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
         credentialsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials(userName, password));
         
         // 转换成 HttpHost 数组
         HttpHost[] httpHost = hostLists.toArray(new HttpHost[]{});
         // 构建连接对象
         RestClientBuilder builder = RestClient.builder(httpHost);
         // 异步连接延时配置
         builder.setRequestConfigCallback(requestConfigBuilder -> {
            requestConfigBuilder.setConnectTimeout(connectTimeout);
            requestConfigBuilder.setSocketTimeout(socketTimeout);
            requestConfigBuilder.setConnectionRequestTimeout(connectionRequestTimeout);
            return requestConfigBuilder;
         });
         // 异步连接数配置
         builder.setHttpClientConfigCallback(httpClientBuilder -> {
            httpClientBuilder.setMaxConnTotal(maxConnectNum);
            httpClientBuilder.setMaxConnPerRoute(maxConnectPerRoute);
            return httpClientBuilder.setDefaultCredentialsProvider(credentialsProvider);
         });
         return new RestHighLevelClient(builder);
      }
}
第四步测试: 1.没有执行测试方法前在可视化界面查看

2.执行测试方法
package com.atguigu.gulimall.search;

import com.alibaba.fastjson.JSON;
// import com.atguigu.gulimall.search.config.GulimallFlasticSearchConfig;
import com.atguigu.gulimall.search.config.cccccc;
import lombok.Data;
import org.elasticsearch.action.index.IndexRequest;
// import org.elasticsearch.action.index.IndexResponse;
import org.elasticsearch.action.index.IndexResponse;
import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.common.xcontent.XContentType;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

import java.io.IOException;

@RunWith(SpringRunner.class)
@SpringBootTest
public class GulimallSearchApplicationTests {
   
   @Autowired //注入RestHighLevelClient
   RestHighLevelClient client;
   
   
   @Test
   public void indexData() throws IOException {
      //创建索引对象,给users索引存储数据
      IndexRequest indexRequest=new IndexRequest("users");
      //设置唯一标识id
      indexRequest.id("1");
      //"userName","zhangsan","age",18,"gender","男"
      //创建user对象
      User user=new User();
      //给user实体对象赋值
      user.setUserName("zhangsan");
      user.setAge(18);
      user.setGender("男");
      //将user对象转为json格式
      String jsonString = JSON.toJSONString(user);
      //要保存的内容
      indexRequest.source(jsonString, XContentType.JSON);
      
      //执行插入保存操作
      IndexResponse index = client.index(indexRequest, cccccc.COMMON_OPTIONS);
      
      //提取有用的响应数据
      System.out.println(index);
   }
   
   //User实体类
   @Data //get-set方法
   class User{
      private String userName;  //姓名
      private String gender; //性别
      private Integer age; //年龄
   }
   
   
   
   
   @Test
   public void contextLoads() {
      System.out.println(client);
   }

}
3.执行测试方法后查看图形化界面成功

idea显示:

图形化界面显示:

==End结束=

参考:

按照这个设置成功的====================

https://blog.csdn.net/terry711/article/details/115653979

======================================

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/696340.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号