From ff48f01256a4d54961d0d16b87d7a8da37fcde72 Mon Sep 17 00:00:00 2001 From: fanxb Date: Wed, 24 Jul 2019 17:56:16 +0800 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20Feat:=20[=E5=90=8E=E5=8F=B0]:?= =?UTF-8?q?=E9=9B=86=E6=88=90es=EF=BC=8C=E5=B9=B6=E4=BB=8E=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=E6=96=87=E4=BB=B6=E4=B8=AD=E8=AF=BB=E5=8F=96es?= =?UTF-8?q?=E5=9C=B0=E5=9D=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bookMarkService/common/pom.xml | 8 +- .../common/{ => constant}/Constant.java | 2 +- .../bookmark/common/constant/EsConstant.java | 11 ++ .../common/entity/EsInsertEntity.java | 11 ++ .../fanxb/bookmark/common/util/EsUtil.java | 121 ++++++++++++++---- bookMarkService/pom.xml | 2 +- .../web/src/main/resources/application.yml | 5 + 7 files changed, 129 insertions(+), 31 deletions(-) rename bookMarkService/common/src/main/java/com/fanxb/bookmark/common/{ => constant}/Constant.java (91%) create mode 100644 bookMarkService/common/src/main/java/com/fanxb/bookmark/common/constant/EsConstant.java create mode 100644 bookMarkService/common/src/main/java/com/fanxb/bookmark/common/entity/EsInsertEntity.java diff --git a/bookMarkService/common/pom.xml b/bookMarkService/common/pom.xml index 032c412..ca3a0ce 100644 --- a/bookMarkService/common/pom.xml +++ b/bookMarkService/common/pom.xml @@ -11,11 +11,8 @@ bookmark-common - - - com.squareup.okhttp3 @@ -95,16 +92,13 @@ 1.2.56 - + org.elasticsearch.client elasticsearch-rest-high-level-client - 7.2.0 - - diff --git a/bookMarkService/common/src/main/java/com/fanxb/bookmark/common/Constant.java b/bookMarkService/common/src/main/java/com/fanxb/bookmark/common/constant/Constant.java similarity index 91% rename from bookMarkService/common/src/main/java/com/fanxb/bookmark/common/Constant.java rename to bookMarkService/common/src/main/java/com/fanxb/bookmark/common/constant/Constant.java index 48280d2..e99e44f 100644 --- a/bookMarkService/common/src/main/java/com/fanxb/bookmark/common/Constant.java +++ b/bookMarkService/common/src/main/java/com/fanxb/bookmark/common/constant/Constant.java @@ -1,4 +1,4 @@ -package com.fanxb.bookmark.common; +package com.fanxb.bookmark.common.constant; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; diff --git a/bookMarkService/common/src/main/java/com/fanxb/bookmark/common/constant/EsConstant.java b/bookMarkService/common/src/main/java/com/fanxb/bookmark/common/constant/EsConstant.java new file mode 100644 index 0000000..048e37f --- /dev/null +++ b/bookMarkService/common/src/main/java/com/fanxb/bookmark/common/constant/EsConstant.java @@ -0,0 +1,11 @@ +package com.fanxb.bookmark.common.constant; + +/** + * 类功能简述: + * 类功能详述: + * + * @author fanxb + * @date 2019/7/23 14:34 + */ +public class EsConstant { +} diff --git a/bookMarkService/common/src/main/java/com/fanxb/bookmark/common/entity/EsInsertEntity.java b/bookMarkService/common/src/main/java/com/fanxb/bookmark/common/entity/EsInsertEntity.java new file mode 100644 index 0000000..71f3bc8 --- /dev/null +++ b/bookMarkService/common/src/main/java/com/fanxb/bookmark/common/entity/EsInsertEntity.java @@ -0,0 +1,11 @@ +package com.fanxb.bookmark.common.entity; + +/** + * 类功能简述: + * 类功能详述: + * + * @author fanxb + * @date 2019/7/24 17:37 + */ +public class EsInsertEntity { +} diff --git a/bookMarkService/common/src/main/java/com/fanxb/bookmark/common/util/EsUtil.java b/bookMarkService/common/src/main/java/com/fanxb/bookmark/common/util/EsUtil.java index 59aab8c..9327c7d 100644 --- a/bookMarkService/common/src/main/java/com/fanxb/bookmark/common/util/EsUtil.java +++ b/bookMarkService/common/src/main/java/com/fanxb/bookmark/common/util/EsUtil.java @@ -1,16 +1,29 @@ package com.fanxb.bookmark.common.util; +import com.alibaba.fastjson.JSON; +import com.fanxb.bookmark.common.constant.EsConstant; +import com.fanxb.bookmark.common.entity.EsInsertEntity; +import com.fanxb.bookmark.common.exception.CustomException; +import lombok.extern.slf4j.Slf4j; import org.apache.http.HttpHost; +import org.elasticsearch.action.bulk.BulkRequest; +import org.elasticsearch.action.index.IndexRequest; import org.elasticsearch.client.RequestOptions; import org.elasticsearch.client.RestClient; import org.elasticsearch.client.RestHighLevelClient; import org.elasticsearch.client.indices.CreateIndexRequest; import org.elasticsearch.client.indices.CreateIndexResponse; +import org.elasticsearch.client.indices.GetIndexRequest; import org.elasticsearch.common.settings.Settings; -import org.elasticsearch.common.xcontent.XContentBuilder; -import org.elasticsearch.common.xcontent.XContentFactory; +import org.elasticsearch.common.xcontent.XContentType; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; +import javax.annotation.PostConstruct; +import java.lang.ref.ReferenceQueue; +import java.net.Authenticator; +import java.util.List; + /** * 类功能简述: * 类功能详述: @@ -19,34 +32,98 @@ import org.springframework.stereotype.Component; * @date 2019/7/19 16:07 */ @Component +@Slf4j public class EsUtil { + @Value("${es.host}") + public String host; + @Value("${es.port}") + public int port; + @Value("${es.scheme}") + public String scheme; - public EsUtil() throws Exception { - RestHighLevelClient client = new RestHighLevelClient(RestClient.builder(new HttpHost("10.82.17.91", 9200, "http"))); - CreateIndexRequest request = new CreateIndexRequest("test-index"); - request.settings(Settings.builder().put("index.number_of_shards", 3).put("index.number_of_replicas", 2)); - XContentBuilder builder = XContentFactory.jsonBuilder(); - builder.startObject(); - { - builder.startObject("properties"); - { - builder.startObject("column1"); - { - builder.field("type", ""); - builder.field("index", "not_analyzed"); - } - builder.endObject(); + + public static RestHighLevelClient client = null; + + + @PostConstruct + public void init() { + try { + client = new RestHighLevelClient(RestClient.builder(new HttpHost(host, port, scheme))); + if (this.indexExist(EsConstant.BOOKMARK_INDEX)) { + return; } - builder.endObject(); + CreateIndexRequest request = new CreateIndexRequest(EsConstant.BOOKMARK_INDEX); + request.settings(Settings.builder().put("index.number_of_shards", 3).put("index.number_of_replicas", 2)); + request.mapping(EsConstant.CREATE_BOOKMARK_INDEX, XContentType.JSON); + CreateIndexResponse res = client.indices().create(request, RequestOptions.DEFAULT); + if (!res.isAcknowledged()) { + throw new CustomException("初始化失败"); + } + } catch (Exception e) { + log.error("初始化es失败", e); + System.exit(0); } - builder.endObject(); - request.mapping(builder); - CreateIndexResponse res = client.indices().create(request, RequestOptions.DEFAULT); - System.out.println(res); + } + /** + * Description: 判断某个index是否存在 + * + * @param index index名 + * @return boolean + * @author fanxb + * @date 2019/7/24 14:57 + */ + public boolean indexExist(String index) throws Exception { + GetIndexRequest request = new GetIndexRequest(index); + request.local(false); + request.humanReadable(true); + request.includeDefaults(false); + return client.indices().exists(request, RequestOptions.DEFAULT); + } + + /** + * Description: 插入一条记录 + * + * @param index index + * @param id id + * @param o o + * @author fanxb + * @date 2019/7/24 15:02 + */ + public void insertOne(String index, EsInsertEntity entity) { + IndexRequest request = new IndexRequest(index); + request.id(entity.getId()); + request.source(JSON.toJSONString(entity.getData()), XContentType.JSON); + try { + client.index(request, RequestOptions.DEFAULT); + } catch (Exception e) { + throw new CustomException(e); + } + } + + /** + * Description: 批量插入数据 + * + * @param index index + * @param list 带插入列表 + * @author fanxb + * @date 2019/7/24 17:38 + */ + public void insertBatch(String index, List list) { + BulkRequest request = new BulkRequest(); + list.forEach(item -> request.add(new IndexRequest(index).id(item.getId()).source(JSON.toJSONString(item.getData())))); + try { + client.bulk(request, RequestOptions.DEFAULT); + } catch (Exception e) { + throw new CustomException(e); + } + } + + public static void main(String[] args) throws Exception { EsUtil util = new EsUtil(); + System.out.println(util.indexExist("bookmark")); } } diff --git a/bookMarkService/pom.xml b/bookMarkService/pom.xml index 7ec4774..73ef8bc 100644 --- a/bookMarkService/pom.xml +++ b/bookMarkService/pom.xml @@ -1 +1 @@ - 4.0.0 com.fanxb bookMarkService pom 1.0-SNAPSHOT common business web utf-8 utf-8 11 org.springframework.boot spring-boot-starter-parent 2.1.6.RELEASE org.springframework.boot spring-boot-starter-web \ No newline at end of file + 4.0.0 com.fanxb bookMarkService pom 1.0-SNAPSHOT common business web utf-8 utf-8 11 org.springframework.boot spring-boot-starter-parent 2.1.6.RELEASE org.elasticsearch.client elasticsearch-rest-high-level-client 7.2.0 org.elasticsearch elasticsearch 7.2.0 org.elasticsearch.client elasticsearch-rest-client 7.2.0 org.springframework.boot spring-boot-starter-web \ No newline at end of file diff --git a/bookMarkService/web/src/main/resources/application.yml b/bookMarkService/web/src/main/resources/application.yml index fe4fe45..9f0773d 100644 --- a/bookMarkService/web/src/main/resources/application.yml +++ b/bookMarkService/web/src/main/resources/application.yml @@ -60,3 +60,8 @@ mybatis: # classpath后面加*,值里面的*才起作用 mapper-locations: classpath*:mapper/*.xml debug: false + +es: + host: localhost + port: 9200 + scheme: http