SpringBoot + Elasticsearch 6.2.3

一、下载 Elasticsearch

https://www.elastic.co/downloads/elasticsearch

二、修改Gradle

1 compile "org.elasticsearch:elasticsearch:6.2.3"
2 compile 'org.elasticsearch.client:elasticsearch-rest-high-level-client:6.2.3'

三、EsConfig

 1 import java.io.IOException;
 2 
 3 import org.apache.http.HttpHost;
 4 import org.apache.http.client.config.RequestConfig.Builder;
 5 import org.apache.http.impl.nio.client.HttpAsyncClientBuilder;
 6 import org.elasticsearch.client.RestClient;
 7 import org.elasticsearch.client.RestClientBuilder;
 8 import org.elasticsearch.client.RestClientBuilder.HttpClientConfigCallback;
 9 import org.elasticsearch.client.RestClientBuilder.RequestConfigCallback;
10 import org.elasticsearch.client.RestHighLevelClient;
11 import org.springframework.context.annotation.Bean;
12 import org.springframework.context.annotation.Configuration;
13 
14 @Configuration
15 public class EsConfig {
16 
17   private String host = "127.0.0.1";
18   private int port = 9200;
19   private String schema = "http";
20   private int connectTimeOut = 1000;
21   private int socketTimeOut = 30000;
22   private int connectionRequestTimeOut = 500;
23 
24   private int maxConnectNum = 100;
25   private int maxConnectPerRoute = 100;
26 
27   private HttpHost httpHost = new HttpHost(host, port, schema);
28   private boolean uniqueConnectTimeConfig = true;
29   private boolean uniqueConnectNumConfig = true;
30   private RestClientBuilder builder;
31   private RestHighLevelClient client;
32 
33   @Bean
34   public RestHighLevelClient client() {
35     builder = RestClient.builder(httpHost);
36     if (uniqueConnectTimeConfig) {
37       setConnectTimeOutConfig();
38     }
39     if (uniqueConnectNumConfig) {
40       setMutiConnectConfig();
41     }
42     client=new RestHighLevelClient(builder);
43     return client;
44   }
45 
46   // 主要关于异步httpclient的连接延时配置
47   public void setConnectTimeOutConfig() {
48     builder.setRequestConfigCallback(new RequestConfigCallback() {
49 
50       @Override
51       public Builder customizeRequestConfig(Builder requestConfigBuilder) {
52         requestConfigBuilder.setConnectTimeout(connectTimeOut);
53         requestConfigBuilder.setSocketTimeout(socketTimeOut);
54         requestConfigBuilder.setConnectionRequestTimeout(connectionRequestTimeOut);
55         return requestConfigBuilder;
56       }
57     });
58   }
59 
60   // 主要关于异步httpclient的连接数配置
61   public void setMutiConnectConfig() {
62     builder.setHttpClientConfigCallback(new HttpClientConfigCallback() {
63 
64       @Override
65       public HttpAsyncClientBuilder customizeHttpClient(HttpAsyncClientBuilder httpClientBuilder) {
66         httpClientBuilder.setMaxConnTotal(maxConnectNum);
67         httpClientBuilder.setMaxConnPerRoute(maxConnectPerRoute);
68         return httpClientBuilder;
69       }
70     });
71   }
72   
73   public void close() {
74     if (client != null) {
75       try {
76         client.close();
77       } catch (IOException e) {
78         e.printStackTrace();
79       }
80     }
81 }
82 }

 四、调用

1 @Autowired
2 private RestHighLevelClient client;
 1.创建index
1 CreateIndexRequest request = new CreateIndexRequest("indexname");//index名必须全小写,否则报错
2 try {
3   client.indices().create(request);
4 } catch (IOException e) {
5   e.printStackTrace();
6 }
2.添加数据
1 IndexRequest indexRequest = new IndexRequest("indexname", "typename", "id");//id为自定义
2 ObjectMapper mapper = new ObjectMapper();
3 try {
4   indexRequest.source(mapper.writeValueAsString(object), XContentType.JSON);
5   client.index(indexRequest);
6 } catch (Exception e) {
7   e.printStackTrace();
8 }
3.删除数据
1 DeleteRequest deleteRequest = new DeleteRequest("indexname", "typename", id);
2 DeleteResponse response = null;
3 try {
4   response = client.delete(deleteRequest);
5 } catch (IOException e) {
6   e.printStackTrace();
7 }
4.批量插入数据
 1 BulkRequest bulkRequest = new BulkRequest();
 2 IndexRequest indexRequest = null;
 3 ObjectMapper mapper = new ObjectMapper();
 4 try {
 5   for (Object o : objects) {
 6     indexRequest = new IndexRequest(index, type, p.getId());
 7     indexRequest.source(mapper.writeValueAsString(o), XContentType.JSON);
 8     bulkRequest.add(indexRequest);
 9   }
10 client.bulk(bulkRequest);
11 } catch (Exception e) {
12   e.printStackTrace();
13 }
5.批量删除数据
 1 BulkRequest bulkRequest = new BulkRequest();
 2 DeleteRequest deleteRequest = null;
 3 try {
 4   for (String id : ids) {
 5     deleteRequest = new DeleteRequest(index, type, id);
 6     bulkRequest.add(deleteRequest);
 7   }
 8   client.bulk(bulkRequest);
 9 } catch (Exception e) {
10   e.printStackTrace();
11 }
6.未完待续

转载于:https://www.cnblogs.com/yelasilent/p/8875970.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值