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 extends EsInsertEntity> 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