ruoyi-admin/src/main/resources/application-druid.yml | 补丁 | 查看 | 原始文档 | blame | 历史 | |
ruoyi-admin/src/main/resources/application.yml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ruoyi-admin/src/test/java/com/ruoyi/esTest.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ruoyi-common/src/main/java/com/ruoyi/common/config/ElasticSearchConfig.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/EsModel.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
zhang-content/src/main/java/com/ruoyi/service/esService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
zhang-content/src/main/java/com/ruoyi/service/impl/ZfEventServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
zhang-content/src/main/java/com/ruoyi/service/impl/esServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
ruoyi-admin/src/main/resources/application-druid.yml
ruoyi-admin/src/main/resources/application.yml
@@ -51,8 +51,8 @@ spring: #es配置 elasticsearch: rest: uris: http://localhost:8087 host: 47.93.189.255 port: 8087 # 资源信息 messages: # 国际化资源文件路径 ruoyi-admin/src/test/java/com/ruoyi/esTest.java
@@ -4,6 +4,11 @@ import com.ruoyi.common.config.ElasticSearchConfig; import com.ruoyi.common.core.domain.entity.EsModel; import com.ruoyi.domain.ZfEvent; import com.ruoyi.mapper.EsRepository; import com.ruoyi.service.ZfEventService; import com.ruoyi.service.esService; import org.elasticsearch.client.IndicesClient; @@ -11,25 +16,53 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import java.util.UUID; @SpringBootTest public class esTest { @Autowired private esService ess; @Autowired private EsRepository resp; @Autowired private ZfEventService zfEs; @Test public void esUser() { System.out.println("__________________________"); System.out.println(ess.findByCondition("我真的很开心")); // request.settings(Settings.builder().put("number_of_shards", "1").put("number_of_replicas", "0")); // request.settings(Settings.builder().put("number_of_shards", "1").put("number_of_replicas", "0")); } @Test public void esUs() { // 操作索引的对象 // // 操作索引的对象 System.out.println(ess); ZfEvent zfe = new ZfEvent(); zfe.setId(1489); zfe.setRemark("大家好90"); zfe.setAddress("你好2"); zfe.setTitle("很好很好"); zfe.setPeople("你好"); zfEs.addData(zfe); // ess.insertTable("lis"); // // EsModel esModel = new EsModel(); // Integer inte = 5688; // String uuid = UUID.randomUUID().toString().replace("-",""); // esModel.setId(Long.valueOf(inte)); // esModel.setCtId(Long.valueOf(inte)); // esModel.setCtName("3434"); // esModel.setCtContent("大家好,才是真的好!"); // // //这里存储查询详情的路径 // esModel.setBy5("/family/zfEvent"); // resp.save(esModel); // ess.insertTable(esModel); ruoyi-common/src/main/java/com/ruoyi/common/config/ElasticSearchConfig.java
New file @@ -0,0 +1,43 @@ package com.ruoyi.common.config; import org.apache.http.HttpHost; import org.elasticsearch.client.RestClient; import org.elasticsearch.client.RestHighLevelClient; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration @ConfigurationProperties(prefix = "elasticsearch") public class ElasticSearchConfig { private String host; private int port; public String getHost() { return host; } public void setHost(String host) { this.host = host; } public int getPort() { return port; } public void setPort(int port) { this.port = port; } @Bean public RestHighLevelClient client(){ return new RestHighLevelClient(RestClient.builder( new HttpHost( "47.93.189.255", 8087, "http" ) )); } } ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/EsModel.java
@@ -2,7 +2,6 @@ import lombok.Data; import org.springframework.data.annotation.Id; import org.springframework.data.elasticsearch.annotations.Document; import org.springframework.data.elasticsearch.annotations.Field; import org.springframework.data.elasticsearch.annotations.FieldType; @@ -16,55 +15,55 @@ * @author feige * @date 2023-09-14 */ @Document(indexName = "allsearch") @Document(indexName = "allsearchdata") @Data public class EsModel { /*** 索引id*/ @Id @Field(type = FieldType.Text) private String id; /**** es中对应的数据库业务单据id*/ @Field(analyzer = "ik_max_word") @Field(index = true,type = FieldType.Long) private Long ctId; /**** es中业务数据 对应的业务数据库表名称*/ @Field(analyzer = "ik_max_word") @Field(type = FieldType.Text,analyzer = "ik_max_word") private String ctTableName; /**** es中业务数据 对应的 业务简称*/ @Field(analyzer = "ik_max_word") @Field(index = true,type = FieldType.Text,analyzer = "ik_max_word") private String ctName; /**** es中业务数据 对应的 业务内容详细信息*/ @Field(analyzer = "ik_max_word") @Field(index = true,type = FieldType.Text ,analyzer = "ik_max_word") private String ctContent; /** 备注 */ @Field(analyzer = "ik_max_word") @Field(index = true,type = FieldType.Text,analyzer = "ik_max_word") private String remark; /** 备用1 */ @Field(analyzer = "ik_max_word") @Field(index = true,type = FieldType.Text,analyzer = "ik_max_word") private String by1; /** 备用2 */ @Field(analyzer = "ik_max_word") @Field(index = true,type = FieldType.Text,analyzer = "ik_max_word") private String by2; /** 备用3 */ @Field(analyzer = "ik_max_word") @Field(index = true,type = FieldType.Text,analyzer = "ik_max_word") private String by3; /** 备用4 */ @Field(analyzer = "ik_max_word") @Field(index = true,type = FieldType.Text,analyzer = "ik_max_word") private String by4; /** 备用5 */ @Field(analyzer = "ik_max_word") @Field(type = FieldType.Text,analyzer = "ik_max_word") private String by5; } zhang-content/src/main/java/com/ruoyi/service/esService.java
@@ -2,6 +2,12 @@ import com.ruoyi.common.core.domain.entity.EsModel; import java.util.List; public interface esService { // 插入索引 public int insertTable(EsModel esModel); // public List<EsModel> findByCondition(String con); } zhang-content/src/main/java/com/ruoyi/service/impl/ZfEventServiceImpl.java
@@ -313,26 +313,26 @@ @Override public AjaxResult addData(ZfEvent zfEvent) { ZInfoUser myself = zInfoUserService.getMyself(); Long familyId = myself.getFamilyId(); if(familyId == null){ throw new RuntimeException("您还未加入任何家庭"); } List<ZAuthority> authority = zAuthorityService.getAuthority(); List<Long> familyIdList = authority.stream().filter(auth -> auth.getAuthority().toString().equals(EVENT_LIST_ADD)).map(ZAuthority::getFid).collect(Collectors.toList()); familyIdList.add(familyId); if (zfEvent.getFamilyId()!=null && !familyIdList.contains(zfEvent.getFamilyId())) { throw new RuntimeException("你没有权限操作此家庭的数据"); } if(zfEvent.getFamilyId() == null){ //默认添加自己家庭的数据 zfEvent.setFamilyId(familyId); } // ZInfoUser myself = zInfoUserService.getMyself(); // Long familyId = myself.getFamilyId(); // // if(familyId == null){ // throw new RuntimeException("您还未加入任何家庭"); // } // // List<ZAuthority> authority = zAuthorityService.getAuthority(); // List<Long> familyIdList = authority.stream().filter(auth -> auth.getAuthority().toString().equals(EVENT_LIST_ADD)).map(ZAuthority::getFid).collect(Collectors.toList()); // familyIdList.add(familyId); // // if (zfEvent.getFamilyId()!=null && !familyIdList.contains(zfEvent.getFamilyId())) { // throw new RuntimeException("你没有权限操作此家庭的数据"); // } // // // if(zfEvent.getFamilyId() == null){ // //默认添加自己家庭的数据 // zfEvent.setFamilyId(familyId); // } //判断是否有重复数据 LambdaQueryWrapper<ZfEvent> lqw = uniqueCondition(zfEvent); @@ -358,6 +358,7 @@ // esModel.setCtName("大家"); // esModel.setCtContent("大家好,才是真的好");//处事由 esSer.insertTable(esModel); return AjaxResult.success(); } else { return AjaxResult.error(); zhang-content/src/main/java/com/ruoyi/service/impl/esServiceImpl.java
@@ -4,35 +4,68 @@ import com.ruoyi.mapper.EsRepository; import com.ruoyi.service.esService; import org.elasticsearch.index.query.BoolQueryBuilder; import org.elasticsearch.index.query.MultiMatchQueryBuilder; import org.elasticsearch.index.query.QueryBuilders; import org.springframework.data.domain.PageRequest; import org.springframework.data.elasticsearch.core.ElasticsearchRestTemplate; import org.springframework.data.elasticsearch.core.SearchHits; import org.springframework.data.elasticsearch.core.query.NativeSearchQuery; import org.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilder; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.ArrayList; import java.util.List; @Service public class esServiceImpl implements esService { @Resource private EsRepository esRepository; @Resource private ElasticsearchRestTemplate elasticsearchRestTemplate; @Override public int insertTable(EsModel esModel) { // EsModel esModel = new EsModel(); // Integer integer = new Integer(123); // esModel.setId(Long.valueOf(integer)); // esModel.setCtId(Long.valueOf(integer)); // esModel.setCtTableName("tb_ajk"); // esModel.setCtName("大家"); // esModel.setCtContent("大家好,才是真的好");//处事由 // esModel.setBy1(tbAjk.getLaay());//案由 // esModel.setBy2(tbAjk.getAjlb());//类别 // esModel.setBy3(tbAjk.getCjnr());//内容 // esModel.setBy4(tbAjk.getContent());//出内容 // esModel.setBy5(tbAjk.getCbpcs());//承办 // esModel.setRemark(tbAjk.getJyaq());//简要情 try { esRepository.save(esModel); // esRepository.searchSimilar() } catch (Exception e) { System.out.println("dddddddddddd"); System.out.println(e); // throw new Exception("ES数据同步失败,请联系管理员处理!"); } return 0; } // 全文检索 @Override public List<EsModel> findByCondition(String con) { List<EsModel> esm = new ArrayList<>(); // MatchQueryBuilder matchQueryBuilder = QueryBuilders.matchQuery("title", title); //多字段进行匹配 // MultiMatchQueryBuilder multiMatchQueryBuilder = QueryBuilders.multiMatchQuery(con, "ctName", "ctContent","remark", // "by1","by2","by3","by4"); BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery(); boolQueryBuilder.should(QueryBuilders.matchQuery("ctName",con)); boolQueryBuilder.should(QueryBuilders.matchQuery("ctContent",con)); boolQueryBuilder.should(QueryBuilders.matchQuery("remark",con)); boolQueryBuilder.should(QueryBuilders.matchQuery("by1",con)); boolQueryBuilder.should(QueryBuilders.matchQuery("by2",con)); boolQueryBuilder.should(QueryBuilders.matchQuery("by3",con)); boolQueryBuilder.should(QueryBuilders.matchQuery("by4",con)); NativeSearchQueryBuilder nativeSearchQueryBuilder = new NativeSearchQueryBuilder() .withQuery(boolQueryBuilder); NativeSearchQuery nativeSearchQuery = nativeSearchQueryBuilder.build(); // 执行查询 SearchHits<EsModel> searchHits = elasticsearchRestTemplate.search(nativeSearchQuery,EsModel.class); searchHits.getSearchHits().forEach(personSearchHit -> { EsModel content = personSearchHit.getContent(); esm.add(content); // System.out.println(content); }); // articleList.forEach(a-> System.out.println(a)) return esm; } }