From 02a56bc6b5284abfa2093b21e5958531dad2fc9b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=9A=AE=E5=85=89=EF=BC=9A=E5=9F=8E=E4=B8=AD=E5=9F=8E?=
<806783409@qq.com>
Date: Wed, 10 Jul 2019 21:19:06 +0800
Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0elasticsearch?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
pom.xml | 1 +
zyplayer-doc-data/pom.xml | 40 ++-
.../elasticsearch/service/EsWikiPage.java | 246 ++++++++++++++++++
.../service/EsWikiPageService.java | 26 ++
.../elasticsearch/support/Document.java | 22 ++
.../support/ElaticSearchConfig.java | 41 +++
.../support/EsAbstractService.java | 161 ++++++++++++
.../service/elasticsearch/support/EsPage.java | 29 +++
.../elasticsearch/support/EsQueryColumn.java | 55 ++++
.../GeneratorDbDatasourceController.java | 20 --
zyplayer-doc-db/pom.xml | 3 +-
zyplayer-doc-dubbo/pom.xml | 17 +-
zyplayer-doc-grpc/pom.xml | 17 +-
zyplayer-doc-manage/pom.xml | 4 +-
.../src/main/resources/application.yml | 6 +
zyplayer-doc-swagger/pom.xml | 9 +-
zyplayer-doc-wiki/pom.xml | 15 +-
.../wiki/controller/WikiPageController.java | 68 ++++-
.../controller/param/SearchByEsParam.java | 44 ++++
19 files changed, 761 insertions(+), 63 deletions(-)
create mode 100644 zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/service/elasticsearch/service/EsWikiPage.java
create mode 100644 zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/service/elasticsearch/service/EsWikiPageService.java
create mode 100644 zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/service/elasticsearch/support/Document.java
create mode 100644 zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/service/elasticsearch/support/ElaticSearchConfig.java
create mode 100644 zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/service/elasticsearch/support/EsAbstractService.java
create mode 100644 zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/service/elasticsearch/support/EsPage.java
create mode 100644 zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/service/elasticsearch/support/EsQueryColumn.java
delete mode 100644 zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/web/generator/GeneratorDbDatasourceController.java
create mode 100644 zyplayer-doc-wiki/src/main/java/com/zyplayer/doc/wiki/controller/param/SearchByEsParam.java
diff --git a/pom.xml b/pom.xml
index 79430372..3bc3cef2 100644
--- a/pom.xml
+++ b/pom.xml
@@ -15,6 +15,7 @@
UTF-8
1.8
1.2.53
+ 6.8.0
diff --git a/zyplayer-doc-data/pom.xml b/zyplayer-doc-data/pom.xml
index 6da1a83f..f2f029ce 100644
--- a/zyplayer-doc-data/pom.xml
+++ b/zyplayer-doc-data/pom.xml
@@ -3,17 +3,17 @@
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4.0.0
-
+
com.zyplayer
zyplayer-doc-data
1.0.2
-
+
org.springframework.boot
spring-boot-starter-parent
- 2.0.6.RELEASE
+ 2.1.6.RELEASE
-
+
UTF-8
UTF-8
@@ -24,8 +24,9 @@
6.1.0
1.1.9
1.0.2
+ 6.8.0
-
+
org.springframework.boot
@@ -47,6 +48,7 @@
mysql
mysql-connector-java
+ 5.1.47
com.baomidou
@@ -101,7 +103,33 @@
org.aspectj
aspectjtools
+
+
+ org.elasticsearch
+ elasticsearch
+ ${elasticsearch.version}
+
+
+ org.elasticsearch.client
+ elasticsearch-rest-client
+ ${elasticsearch.version}
+
+
+ org.elasticsearch.client
+ transport
+ ${elasticsearch.version}
+
+
+ org.elasticsearch.plugin
+ transport-netty4-client
+ ${elasticsearch.version}
+
+
+ org.elasticsearch.plugin
+ reindex-client
+ ${elasticsearch.version}
+
-
+
diff --git a/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/service/elasticsearch/service/EsWikiPage.java b/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/service/elasticsearch/service/EsWikiPage.java
new file mode 100644
index 00000000..0e475514
--- /dev/null
+++ b/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/service/elasticsearch/service/EsWikiPage.java
@@ -0,0 +1,246 @@
+package com.zyplayer.doc.data.service.elasticsearch.service;
+
+import com.zyplayer.doc.data.service.elasticsearch.support.Document;
+
+import java.util.Date;
+
+/**
+ * wiki文档搜索
+ *
+ * @author 暮光:城中城
+ * @since 2019-07-07
+ */
+@Document(indexName = "zyplayer_doc", indexType = "doc_wiki")
+public class EsWikiPage {
+
+ private Long id;
+
+ /**
+ * 空间ID
+ */
+ private Long spaceId;
+
+ /**
+ * 名字
+ */
+ private String name;
+
+ /**
+ * 父ID
+ */
+ private Long parentId;
+
+ /**
+ * 节点类型 0=有子节点 1=终节点
+ */
+ private Integer nodeType;
+
+ /**
+ * 赞的数量
+ */
+ private Integer zanNum;
+
+ /**
+ * 编辑类型 0=可编辑 1=不允许编辑
+ */
+ private Integer editType;
+
+ /**
+ * 创建人ID
+ */
+ private Long createUserId;
+
+ /**
+ * 创建人名字
+ */
+ private String createUserName;
+
+ /**
+ * 创建时间
+ */
+ private Date createTime;
+
+ /**
+ * 修改人ID
+ */
+ private Long updateUserId;
+
+ /**
+ * 修改人名字
+ */
+ private String updateUserName;
+
+ /**
+ * 修改时间
+ */
+ private Date updateTime;
+
+ /**
+ * 0=有效 1=删除
+ */
+ private Integer delFlag;
+
+ /**
+ * 阅读数
+ */
+ private Integer viewNum;
+
+ /**
+ * 顺序
+ */
+ private Integer seqNo;
+
+ /**
+ * 内容
+ */
+ private String content;
+
+ /**
+ * 预览内容
+ */
+ private String preview;
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public Long getSpaceId() {
+ return spaceId;
+ }
+
+ public void setSpaceId(Long spaceId) {
+ this.spaceId = spaceId;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public Long getParentId() {
+ return parentId;
+ }
+
+ public void setParentId(Long parentId) {
+ this.parentId = parentId;
+ }
+
+ public Integer getNodeType() {
+ return nodeType;
+ }
+
+ public void setNodeType(Integer nodeType) {
+ this.nodeType = nodeType;
+ }
+
+ public Integer getZanNum() {
+ return zanNum;
+ }
+
+ public void setZanNum(Integer zanNum) {
+ this.zanNum = zanNum;
+ }
+
+ public Integer getEditType() {
+ return editType;
+ }
+
+ public void setEditType(Integer editType) {
+ this.editType = editType;
+ }
+
+ public Long getCreateUserId() {
+ return createUserId;
+ }
+
+ public void setCreateUserId(Long createUserId) {
+ this.createUserId = createUserId;
+ }
+
+ public String getCreateUserName() {
+ return createUserName;
+ }
+
+ public void setCreateUserName(String createUserName) {
+ this.createUserName = createUserName;
+ }
+
+ public Date getCreateTime() {
+ return createTime;
+ }
+
+ public void setCreateTime(Date createTime) {
+ this.createTime = createTime;
+ }
+
+ public Long getUpdateUserId() {
+ return updateUserId;
+ }
+
+ public void setUpdateUserId(Long updateUserId) {
+ this.updateUserId = updateUserId;
+ }
+
+ public String getUpdateUserName() {
+ return updateUserName;
+ }
+
+ public void setUpdateUserName(String updateUserName) {
+ this.updateUserName = updateUserName;
+ }
+
+ public Date getUpdateTime() {
+ return updateTime;
+ }
+
+ public void setUpdateTime(Date updateTime) {
+ this.updateTime = updateTime;
+ }
+
+ public Integer getDelFlag() {
+ return delFlag;
+ }
+
+ public void setDelFlag(Integer delFlag) {
+ this.delFlag = delFlag;
+ }
+
+ public Integer getViewNum() {
+ return viewNum;
+ }
+
+ public void setViewNum(Integer viewNum) {
+ this.viewNum = viewNum;
+ }
+
+ public Integer getSeqNo() {
+ return seqNo;
+ }
+
+ public void setSeqNo(Integer seqNo) {
+ this.seqNo = seqNo;
+ }
+
+ public String getContent() {
+ return content;
+ }
+
+ public void setContent(String content) {
+ this.content = content;
+ }
+
+ public String getPreview() {
+ return preview;
+ }
+
+ public void setPreview(String preview) {
+ this.preview = preview;
+ }
+}
diff --git a/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/service/elasticsearch/service/EsWikiPageService.java b/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/service/elasticsearch/service/EsWikiPageService.java
new file mode 100644
index 00000000..9bc37cec
--- /dev/null
+++ b/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/service/elasticsearch/service/EsWikiPageService.java
@@ -0,0 +1,26 @@
+package com.zyplayer.doc.data.service.elasticsearch.service;
+
+import com.zyplayer.doc.data.service.elasticsearch.support.ElaticSearchConfig;
+import com.zyplayer.doc.data.service.elasticsearch.support.EsAbstractService;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
+import org.springframework.stereotype.Service;
+
+/**
+ * wiki文档搜索
+ * @author 暮光:城中城
+ * @since 2019-07-07
+ */
+@Service
+@ConditionalOnBean(ElaticSearchConfig.class)
+public class EsWikiPageService extends EsAbstractService {
+
+ @Override
+ public Class getObjClass() {
+ return EsWikiPage.class;
+ }
+
+ @Override
+ public String getPrimaryKey(EsWikiPage tableIndex) {
+ return String.valueOf(tableIndex.getId());
+ }
+}
diff --git a/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/service/elasticsearch/support/Document.java b/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/service/elasticsearch/support/Document.java
new file mode 100644
index 00000000..1e2e2e2d
--- /dev/null
+++ b/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/service/elasticsearch/support/Document.java
@@ -0,0 +1,22 @@
+//
+// Source code recreated from a .class file by IntelliJ IDEA
+// (powered by Fernflower decompiler)
+//
+
+package com.zyplayer.doc.data.service.elasticsearch.support;
+
+import java.lang.annotation.*;
+
+/**
+ * es文档定义
+ * @author 暮光:城中城
+ * @since 2019-07-07
+ */
+@Inherited
+@Retention(RetentionPolicy.RUNTIME)
+@Target({ElementType.TYPE})
+public @interface Document {
+ String indexName();
+
+ String indexType();
+}
diff --git a/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/service/elasticsearch/support/ElaticSearchConfig.java b/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/service/elasticsearch/support/ElaticSearchConfig.java
new file mode 100644
index 00000000..d47434a0
--- /dev/null
+++ b/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/service/elasticsearch/support/ElaticSearchConfig.java
@@ -0,0 +1,41 @@
+package com.zyplayer.doc.data.service.elasticsearch.support;
+
+import org.elasticsearch.client.transport.TransportClient;
+import org.elasticsearch.common.settings.Settings;
+import org.elasticsearch.common.transport.TransportAddress;
+import org.elasticsearch.transport.client.PreBuiltTransportClient;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+import java.net.InetAddress;
+import java.net.UnknownHostException;
+
+/**
+ * 开启es客户端
+ *
+ * @author 暮光:城中城
+ * @since 2019-07-07
+ */
+@Configuration
+@ConditionalOnProperty(prefix = "zyplayer.doc.manage.elasticsearch", name = "open", havingValue = "true")
+public class ElaticSearchConfig {
+
+ @Value(value = "${zyplayer.doc.manage.elasticsearch.host:''}")
+ private String host;
+ @Value("${zyplayer.doc.manage.elasticsearch.port:''}")
+ private String port;
+ @Value("${zyplayer.doc.manage.elasticsearch.cluster-name:''}")
+ private String clusterName;
+
+ @Bean
+ public TransportClient esClient() throws UnknownHostException {
+ Settings settings = Settings.builder()
+ .put("cluster.name", clusterName)
+ .put("client.transport.sniff", true)
+ .build();
+ TransportAddress master = new TransportAddress(InetAddress.getByName(host), Integer.valueOf(port));
+ return new PreBuiltTransportClient(settings).addTransportAddress(master);
+ }
+}
diff --git a/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/service/elasticsearch/support/EsAbstractService.java b/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/service/elasticsearch/support/EsAbstractService.java
new file mode 100644
index 00000000..b3317c1b
--- /dev/null
+++ b/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/service/elasticsearch/support/EsAbstractService.java
@@ -0,0 +1,161 @@
+package com.zyplayer.doc.data.service.elasticsearch.support;
+
+import com.alibaba.fastjson.JSONObject;
+import org.apache.commons.lang3.StringUtils;
+import org.dozer.Mapper;
+import org.elasticsearch.action.DocWriteResponse;
+import org.elasticsearch.action.delete.DeleteResponse;
+import org.elasticsearch.action.index.IndexResponse;
+import org.elasticsearch.action.search.SearchRequestBuilder;
+import org.elasticsearch.action.search.SearchResponse;
+import org.elasticsearch.action.update.UpdateResponse;
+import org.elasticsearch.client.transport.TransportClient;
+import org.elasticsearch.common.text.Text;
+import org.elasticsearch.common.xcontent.XContentType;
+import org.elasticsearch.index.query.BoolQueryBuilder;
+import org.elasticsearch.index.query.QueryBuilders;
+import org.elasticsearch.rest.RestStatus;
+import org.elasticsearch.search.SearchHit;
+import org.elasticsearch.search.fetch.subphase.highlight.HighlightBuilder;
+import org.elasticsearch.search.fetch.subphase.highlight.HighlightField;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.annotation.Resource;
+import java.util.HashMap;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * es抽象类
+ * @author 暮光:城中城
+ * @since 2019-07-07
+ */
+public abstract class EsAbstractService {
+ private static final Logger logger = LoggerFactory.getLogger(EsAbstractService.class);
+
+ @Resource
+ private TransportClient esClient;
+ @Resource
+ private Mapper mapper;
+
+ public abstract Class getObjClass();
+
+ public abstract String getPrimaryKey(T table);
+
+ private String getIndexName() {
+ Document annotation = this.getObjClass().getAnnotation(Document.class);
+ return annotation.indexName();
+ }
+
+ private String getIndexType() {
+ Document annotation = this.getObjClass().getAnnotation(Document.class);
+ return annotation.indexType();
+ }
+
+ public boolean create(T table) {
+ String pk = getPrimaryKey(table);
+ IndexResponse indexResponse = this.esClient
+ .prepareIndex(this.getIndexName(), this.getIndexType())
+ .setId(pk)
+ .setSource(JSONObject.toJSONString(table), XContentType.JSON)
+ .get();
+ logger.debug("ElasticSearch create index with table, pk: {}", pk);
+ return indexResponse.status() == RestStatus.CREATED;
+ }
+
+ public boolean update(T table) {
+ String pk = getPrimaryKey(table);
+ UpdateResponse updateResponse = this.esClient
+ .prepareUpdate(this.getIndexName(), this.getIndexType(), pk)
+ .setDoc(JSONObject.toJSONString(table), XContentType.JSON)
+ .get();
+ logger.info("ElasticSearch update index with table, pk: {}", pk);
+ return updateResponse.status() == RestStatus.OK;
+ }
+
+ public void delete(T table) {
+ String pk = getPrimaryKey(table);
+ DeleteResponse response = this.esClient
+ .prepareDelete(this.getIndexName(), this.getIndexType(), pk)
+ .execute()
+ .actionGet();
+ if (response.getResult() == DocWriteResponse.Result.NOT_FOUND) {
+ logger.warn("ElasticSearch delete index id: {} but not found!", pk);
+ } else {
+ logger.warn("ElasticSearch delete index id: {}", pk);
+ }
+ }
+
+ /**
+ * 多条件 模糊查询,查询前100条
+ * @param condition 查询条件
+ */
+ public List getDataByCondition(List condition) {
+ return getDataByCondition(condition, null, 0, 100).getData();
+ }
+
+ /**
+ * 多条件 模糊查询
+ * @param condition 查询条件
+ * @param startIndex 开始行
+ * @param pageSize 每页数量
+ */
+ public EsPage getDataByCondition(List condition, String[] fields, Integer startIndex, Integer pageSize) {
+ BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
+ // 组装条件
+ condition.forEach(val -> {
+ if (StringUtils.isNotBlank(val.getValue())) {
+ if (val.getType() == 0) {
+ boolQueryBuilder.must(QueryBuilders.wildcardQuery(val.getKey(), val.getValue()));
+ } else if (val.getType() == 1) {
+ boolQueryBuilder.must(QueryBuilders.termQuery(val.getKey(), val.getValue()));
+ }
+ }
+ });
+ // 设置高亮标签
+ HighlightBuilder highlightBuilder = new HighlightBuilder();
+ highlightBuilder.preTags("");
+ highlightBuilder.postTags("");
+ highlightBuilder.field("*");
+ SearchRequestBuilder requestBuilder = esClient.prepareSearch(this.getIndexName()).setTypes(this.getIndexType())
+ .setQuery(boolQueryBuilder)
+ .highlighter(highlightBuilder)
+ .setFrom(startIndex).setSize(pageSize).setExplain(true);
+ // 查询指定字段
+ if (fields != null && fields.length > 0) {
+ requestBuilder.setFetchSource(fields, new String[]{});
+ }
+ SearchResponse response = requestBuilder.execute().actionGet();
+ return responseToList(response);
+ }
+
+ public EsPage responseToList(SearchResponse response) {
+ List tableList = new LinkedList<>();
+ for (SearchHit searchHit : response.getHits().getHits()) {
+ // 获取表ID和表类型
+ Map sourceMap = searchHit.getSourceAsMap();
+ if (sourceMap == null) {
+ sourceMap = new HashMap<>();
+ }
+ // 获取高亮文本
+ Map highlightFieldMap = searchHit.getHighlightFields();
+ for (String key : highlightFieldMap.keySet()) {
+ HighlightField hf = highlightFieldMap.get(key);
+ StringBuilder fragments = new StringBuilder();
+ for (Text text : hf.getFragments()) {
+ fragments.append(text.toString());
+ }
+ sourceMap.put(key, fragments.toString());
+ }
+ T table = mapper.map(sourceMap, this.getObjClass());
+ tableList.add(table);
+ }
+ EsPage esPage = new EsPage<>();
+ esPage.setTotal(response.getHits().getTotalHits());
+ esPage.setData(tableList);
+ return esPage;
+ }
+
+}
diff --git a/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/service/elasticsearch/support/EsPage.java b/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/service/elasticsearch/support/EsPage.java
new file mode 100644
index 00000000..993bd243
--- /dev/null
+++ b/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/service/elasticsearch/support/EsPage.java
@@ -0,0 +1,29 @@
+package com.zyplayer.doc.data.service.elasticsearch.support;
+
+import java.util.List;
+
+/**
+ * es分页结果
+ * @author 暮光:城中城
+ * @since 2019-07-07
+ */
+public class EsPage {
+ private Long total;
+ private List data;
+
+ public Long getTotal() {
+ return total;
+ }
+
+ public void setTotal(Long total) {
+ this.total = total;
+ }
+
+ public List getData() {
+ return data;
+ }
+
+ public void setData(List data) {
+ this.data = data;
+ }
+}
diff --git a/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/service/elasticsearch/support/EsQueryColumn.java b/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/service/elasticsearch/support/EsQueryColumn.java
new file mode 100644
index 00000000..b9b8c141
--- /dev/null
+++ b/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/service/elasticsearch/support/EsQueryColumn.java
@@ -0,0 +1,55 @@
+package com.zyplayer.doc.data.service.elasticsearch.support;
+
+/**
+ * es查询字段封装
+ * @author 暮光:城中城
+ * @since 2019-07-07
+ */
+public class EsQueryColumn {
+ private String key;
+ private String value;
+ // 类型,0=分词搜索 1=不分词
+ private int type;
+
+ public EsQueryColumn(String key, String value) {
+ this(key, value, 0);
+ }
+
+ public EsQueryColumn(String key, String value, int type) {
+ this.key = key;
+ this.value = value;
+ this.type = type;
+ }
+
+ public static EsQueryColumn like(String key, String value){
+ return new EsQueryColumn(key, value, 0);
+ }
+
+ public static EsQueryColumn must(String key, String value){
+ return new EsQueryColumn(key, value, 1);
+ }
+
+ public String getKey() {
+ return key;
+ }
+
+ public void setKey(String key) {
+ this.key = key;
+ }
+
+ public String getValue() {
+ return value;
+ }
+
+ public void setValue(String value) {
+ this.value = value;
+ }
+
+ public int getType() {
+ return type;
+ }
+
+ public void setType(int type) {
+ this.type = type;
+ }
+}
diff --git a/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/web/generator/GeneratorDbDatasourceController.java b/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/web/generator/GeneratorDbDatasourceController.java
deleted file mode 100644
index e79d53c8..00000000
--- a/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/web/generator/GeneratorDbDatasourceController.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package com.zyplayer.doc.data.web.generator;
-
-
-import org.springframework.web.bind.annotation.RequestMapping;
-
-import org.springframework.web.bind.annotation.RestController;
-
-/**
- *
- * 前端控制器
- *
- *
- * @author 暮光:城中城
- * @since 2019-07-04
- */
-@RestController
-@RequestMapping("/db-datasource")
-public class GeneratorDbDatasourceController {
-
-}
diff --git a/zyplayer-doc-db/pom.xml b/zyplayer-doc-db/pom.xml
index 7ccbb0b4..6273b7ac 100644
--- a/zyplayer-doc-db/pom.xml
+++ b/zyplayer-doc-db/pom.xml
@@ -25,7 +25,7 @@
org.springframework.boot
spring-boot-starter-parent
- 1.4.2.RELEASE
+ 2.1.6.RELEASE
@@ -90,6 +90,7 @@
1.0.2
true
+ 6.8.0
${project.build.outputDirectory}/META-INF/resources/webjars/${project.artifactId}/${project.version}
diff --git a/zyplayer-doc-dubbo/pom.xml b/zyplayer-doc-dubbo/pom.xml
index d6af0c55..965faff8 100644
--- a/zyplayer-doc-dubbo/pom.xml
+++ b/zyplayer-doc-dubbo/pom.xml
@@ -8,7 +8,7 @@
1.0.2
jar
zyplayer-doc-dubbo
-
+
dubbo文档工具
https://gitee.com/zyplayer/zyplayer-doc/zyplayer-doc-dubbo
@@ -22,23 +22,24 @@
2018-05-22 16:06:06
-
+
org.springframework.boot
spring-boot-starter-parent
- 1.4.2.RELEASE
+ 2.1.6.RELEASE
-
+
UTF-8
UTF-8
1.8
true
+ 6.8.0
${project.build.outputDirectory}/META-INF/resources/webjars/${project.artifactId}/${project.version}
1.0.2
-
+
org.springframework.boot
@@ -76,7 +77,7 @@
-
+
The Apache Software License, Version 2.0
@@ -88,7 +89,7 @@
scm:git@git.oschina.net:zyplayer/zyplayer-doc.git
git@git.oschina.net:zyplayer/zyplayer-doc.git
-
+
snapshots
@@ -99,7 +100,7 @@
https://oss.sonatype.org/service/local/staging/deploy/maven2/
-
+
diff --git a/zyplayer-doc-grpc/pom.xml b/zyplayer-doc-grpc/pom.xml
index 5527d480..5a872023 100644
--- a/zyplayer-doc-grpc/pom.xml
+++ b/zyplayer-doc-grpc/pom.xml
@@ -7,23 +7,24 @@
com.zyplayer
zyplayer-doc-grpc
1.0.2
-
+
org.springframework.boot
spring-boot-starter-parent
- 1.4.2.RELEASE
+ 2.1.6.RELEASE
-
+
UTF-8
UTF-8
1.8
-
+
+ 6.8.0
1.16.1
3.6.1
0.0.3
-
+
org.springframework.boot
@@ -55,7 +56,7 @@
1.0.2
-
+
The Apache Software License, Version 2.0
@@ -67,7 +68,7 @@
scm:git@git.oschina.net:zyplayer/zyplayer-doc.git
git@git.oschina.net:zyplayer/zyplayer-doc.git
-
+
snapshots
@@ -78,7 +79,7 @@
https://oss.sonatype.org/service/local/staging/deploy/maven2/
-
+
diff --git a/zyplayer-doc-manage/pom.xml b/zyplayer-doc-manage/pom.xml
index deeb0f84..e8bf71d6 100644
--- a/zyplayer-doc-manage/pom.xml
+++ b/zyplayer-doc-manage/pom.xml
@@ -13,7 +13,7 @@
org.springframework.boot
spring-boot-starter-parent
- 2.0.6.RELEASE
+ 2.1.6.RELEASE
@@ -29,6 +29,7 @@
1.9.4
2.9.2
1.0.2
+ 6.8.0
@@ -52,6 +53,7 @@
mysql
mysql-connector-java
+ 5.1.47
com.alibaba
diff --git a/zyplayer-doc-manage/src/main/resources/application.yml b/zyplayer-doc-manage/src/main/resources/application.yml
index 8e259e63..6d089e83 100644
--- a/zyplayer-doc-manage/src/main/resources/application.yml
+++ b/zyplayer-doc-manage/src/main/resources/application.yml
@@ -22,6 +22,12 @@ zyplayer:
doc:
# ------zyplayer_doc_manage相关配置------
manage:
+ elasticsearch:
+ # 是否开启es,true或false,现在主要用在wiki文档的搜索
+ open: false
+ cluster-name: zyplayer-doc
+ port: 9300
+ host: 127.0.0.1
# 版本和升级信息获取地址
version: 1.0.2
upgradePropertiesUrl: https://gitee.com/zyplayer/zyplayer-doc/raw/master/upgrade.properties
diff --git a/zyplayer-doc-swagger/pom.xml b/zyplayer-doc-swagger/pom.xml
index 2ad9798c..80fe7832 100644
--- a/zyplayer-doc-swagger/pom.xml
+++ b/zyplayer-doc-swagger/pom.xml
@@ -22,19 +22,20 @@
2018-05-22 16:06:06
-
+
org.springframework.boot
spring-boot-starter-parent
- 1.4.2.RELEASE
+ 2.1.6.RELEASE
-
+
UTF-8
UTF-8
1.8
true
+ 6.8.0
${project.build.outputDirectory}/META-INF/resources/webjars/${project.artifactId}/${project.version}
1.0.2
@@ -75,7 +76,7 @@
1.3.3
-
+
The Apache Software License, Version 2.0
diff --git a/zyplayer-doc-wiki/pom.xml b/zyplayer-doc-wiki/pom.xml
index e41d5ab9..9a10a807 100644
--- a/zyplayer-doc-wiki/pom.xml
+++ b/zyplayer-doc-wiki/pom.xml
@@ -2,7 +2,7 @@
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4.0.0
-
+
com.zyplayer
zyplayer-doc-wiki
1.0.2
@@ -21,13 +21,13 @@
2018-05-22 16:06:06
-
+
org.springframework.boot
spring-boot-starter-parent
- 2.0.6.RELEASE
+ 2.1.6.RELEASE
-
+
UTF-8
UTF-8
@@ -35,9 +35,10 @@
1.0.2
true
+ 6.8.0
${project.build.outputDirectory}/META-INF/resources/webjars/${project.artifactId}/${project.version}
-
+
org.springframework.boot
@@ -74,7 +75,7 @@
scm:git@git.oschina.net:zyplayer/zyplayer-doc.git
git@git.oschina.net:zyplayer/zyplayer-doc.git
-
+
snapshots
@@ -85,7 +86,7 @@
https://oss.sonatype.org/service/local/staging/deploy/maven2/
-
+
diff --git a/zyplayer-doc-wiki/src/main/java/com/zyplayer/doc/wiki/controller/WikiPageController.java b/zyplayer-doc-wiki/src/main/java/com/zyplayer/doc/wiki/controller/WikiPageController.java
index ed476443..460d1fc4 100644
--- a/zyplayer-doc-wiki/src/main/java/com/zyplayer/doc/wiki/controller/WikiPageController.java
+++ b/zyplayer-doc-wiki/src/main/java/com/zyplayer/doc/wiki/controller/WikiPageController.java
@@ -11,8 +11,13 @@ import com.zyplayer.doc.data.config.security.DocUserDetails;
import com.zyplayer.doc.data.config.security.DocUserUtil;
import com.zyplayer.doc.data.repository.manage.entity.*;
import com.zyplayer.doc.data.repository.manage.mapper.WikiPageMapper;
+import com.zyplayer.doc.data.service.elasticsearch.service.EsWikiPage;
+import com.zyplayer.doc.data.service.elasticsearch.service.EsWikiPageService;
+import com.zyplayer.doc.data.service.elasticsearch.support.EsPage;
+import com.zyplayer.doc.data.service.elasticsearch.support.EsQueryColumn;
import com.zyplayer.doc.data.service.manage.*;
import com.zyplayer.doc.data.utils.CacheUtil;
+import com.zyplayer.doc.wiki.controller.param.SearchByEsParam;
import com.zyplayer.doc.wiki.controller.param.SpaceNewsParam;
import com.zyplayer.doc.wiki.controller.vo.SpaceNewsVo;
import com.zyplayer.doc.wiki.controller.vo.WikiPageContentVo;
@@ -25,6 +30,7 @@ import org.apache.commons.lang3.StringUtils;
import org.dozer.Mapper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@@ -59,6 +65,8 @@ public class WikiPageController {
WikiPageMapper wikiPageMapper;
@Resource
Mapper mapper;
+ @Resource
+ EsWikiPageService esWikiPageService;
@PostMapping("/list")
public ResponseJson> list(WikiPage wikiPage) {
@@ -256,6 +264,15 @@ public class WikiPageController {
pageContent.setCreateUserName(currentUser.getUsername());
wikiPageContentService.save(pageContent);
}
+ // 保存到es
+ if (esWikiPageService != null) {
+ EsWikiPage esWikiPage = mapper.map(wikiPage, EsWikiPage.class);
+ esWikiPage.setContent(content);
+ esWikiPage.setPreview(preview);
+ esWikiPageService.create(esWikiPage);
+ } else {
+ logger.warn("未开启elasticsearch服务,建议开启");
+ }
return DocResponseJson.ok(wikiPage);
}
@@ -286,20 +303,42 @@ public class WikiPageController {
return DocResponseJson.ok();
}
- @PostMapping("/news")
- public ResponseJson