From d29cce61fb3a38f9f57a64a2a20d276b0d1254bc Mon Sep 17 00:00:00 2001 From: feige <feige@qq.com> Date: 星期六, 16 九月 2023 11:54:24 +0800 Subject: [PATCH] es的增加索引和查询已经写好了,可以直接调用了 --- zhang-content/src/main/java/com/ruoyi/service/impl/ZfEventServiceImpl.java | 41 +++++----- zhang-content/src/main/java/com/ruoyi/service/impl/esServiceImpl.java | 61 +++++++++++--- ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/EsModel.java | 25 +++--- ruoyi-admin/src/main/resources/application-druid.yml | 2 ruoyi-admin/src/test/java/com/ruoyi/esTest.java | 37 ++++++++ ruoyi-common/src/main/java/com/ruoyi/common/config/ElasticSearchConfig.java | 43 ++++++++++ zhang-content/src/main/java/com/ruoyi/service/esService.java | 6 + ruoyi-admin/src/main/resources/application.yml | 4 8 files changed, 167 insertions(+), 52 deletions(-) diff --git a/ruoyi-admin/src/main/resources/application-druid.yml b/ruoyi-admin/src/main/resources/application-druid.yml index 38fe8b0..ab100dc 100644 --- a/ruoyi-admin/src/main/resources/application-druid.yml +++ b/ruoyi-admin/src/main/resources/application-druid.yml @@ -6,7 +6,7 @@ druid: # 涓诲簱鏁版嵁婧� master: - # url: jdbc:mysql://47.93.189.255:3306/ruoyi?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 + #url: jdbc:mysql://47.93.189.255:3306/ruoyi?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 url: jdbc:mysql://localhost:3306/ruoyi?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 username: root password: ZhangApp123! diff --git a/ruoyi-admin/src/main/resources/application.yml b/ruoyi-admin/src/main/resources/application.yml index 85800ff..22db82a 100644 --- a/ruoyi-admin/src/main/resources/application.yml +++ b/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: # 鍥介檯鍖栬祫婧愭枃浠惰矾寰� diff --git a/ruoyi-admin/src/test/java/com/ruoyi/esTest.java b/ruoyi-admin/src/test/java/com/ruoyi/esTest.java index 77c1fdf..45355cf 100644 --- a/ruoyi-admin/src/test/java/com/ruoyi/esTest.java +++ b/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); diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/config/ElasticSearchConfig.java b/ruoyi-common/src/main/java/com/ruoyi/common/config/ElasticSearchConfig.java new file mode 100644 index 0000000..ba1fd19 --- /dev/null +++ b/ruoyi-common/src/main/java/com/ruoyi/common/config/ElasticSearchConfig.java @@ -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" + ) + )); + } +} + diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/EsModel.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/EsModel.java index d32642f..fdd5763 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/EsModel.java +++ b/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涓搴旂殑鏁版嵁搴撲笟鍔″崟鎹甶d*/ - @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; } diff --git a/zhang-content/src/main/java/com/ruoyi/service/esService.java b/zhang-content/src/main/java/com/ruoyi/service/esService.java index 2be3556..f41663e 100644 --- a/zhang-content/src/main/java/com/ruoyi/service/esService.java +++ b/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); } diff --git a/zhang-content/src/main/java/com/ruoyi/service/impl/ZfEventServiceImpl.java b/zhang-content/src/main/java/com/ruoyi/service/impl/ZfEventServiceImpl.java index 8b5908f..e3688dd 100644 --- a/zhang-content/src/main/java/com/ruoyi/service/impl/ZfEventServiceImpl.java +++ b/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(); diff --git a/zhang-content/src/main/java/com/ruoyi/service/impl/esServiceImpl.java b/zhang-content/src/main/java/com/ruoyi/service/impl/esServiceImpl.java index ff2cbbd..e043f0b 100644 --- a/zhang-content/src/main/java/com/ruoyi/service/impl/esServiceImpl.java +++ b/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; + + } } -- Gitblit v1.9.1