From 944a01d60ffd53ca3a3b87ccfcaedc096219aba2 Mon Sep 17 00:00:00 2001 From: whywhyo <1511349576@qq.com> Date: 星期日, 17 九月 2023 23:42:47 +0800 Subject: [PATCH] 77777 --- zhang-content/src/main/java/com/ruoyi/service/impl/EsServiceImpl.java | 124 +++++++++++++++++++++++++++++++++++++++++ 1 files changed, 124 insertions(+), 0 deletions(-) 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 new file mode 100644 index 0000000..a2ffacc --- /dev/null +++ b/zhang-content/src/main/java/com/ruoyi/service/impl/EsServiceImpl.java @@ -0,0 +1,124 @@ +package com.ruoyi.service.impl; + +import com.ruoyi.common.core.domain.entity.EsModel; +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.SearchHit; +import org.springframework.data.elasticsearch.core.SearchHits; +import org.springframework.data.elasticsearch.core.mapping.IndexCoordinates; +import org.springframework.data.elasticsearch.core.query.NativeSearchQuery; +import org.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilder; +import org.springframework.data.elasticsearch.core.query.Query; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; +import java.util.Objects; + +@Service +public class EsServiceImpl implements EsService { + @Resource + private EsRepository esRepository; + @Resource + private ElasticsearchRestTemplate elasticsearchRestTemplate; + @Override + public int insertTable(EsModel esModel) { + try { + esRepository.save(esModel); + // esRepository.searchSimilar() + } catch (Exception e) { + 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)); + boolQueryBuilder.should(QueryBuilders.matchQuery("by6",con)); + boolQueryBuilder.should(QueryBuilders.matchQuery("by7",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; + + } + + //鏍规嵁mysql涓殑id鏌ユ壘淇℃伅 + @Override + public EsModel findByCtId(Integer ctId, String ctTableName) { +// NativeSearchQuery searchQuery = new NativeSearchQueryBuilder() +// .withQuery(QueryBuilders.matchQuery("ctId", ctId)) // 鑷畾涔夋煡璇㈡潯浠� +// .withQuery(QueryBuilders.matchQuery("ctTableName", ctTableName)) // 鑷畾涔夋煡璇㈡潯浠� +// .build(); + BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery(); + boolQueryBuilder.must(QueryBuilders.matchQuery("ctId", ctId)); + boolQueryBuilder.must(QueryBuilders.matchQuery("ctTableName", ctTableName)); + + NativeSearchQueryBuilder nativeSearchQueryBuilder = new NativeSearchQueryBuilder() + .withQuery(boolQueryBuilder); + NativeSearchQuery nativeSearchQuery = nativeSearchQueryBuilder.build(); + + return Objects.requireNonNull(elasticsearchRestTemplate.searchOne(nativeSearchQuery, EsModel.class)).getContent(); + + } + + @Override + public void deleteById(String id) { + esRepository.deleteById(id); + } + + @Override + public void deleteAllData() { + esRepository.deleteAll(); + } + + @Override + public List<EsModel> getAll() { + + ArrayList<EsModel> esModels = new ArrayList<>(); + + // 鏋勫缓鏌ヨ璇锋眰 + SearchHits<EsModel> searchHits = elasticsearchRestTemplate.search(Query.findAll(), EsModel.class,IndexCoordinates.of("allsearchdata")); + + Iterator<SearchHit<EsModel>> iterator = searchHits.stream().iterator(); + while (iterator.hasNext()){ + esModels.add(iterator.next().getContent()); + } + // 杩斿洖鏌ヨ缁撴灉 + return esModels; + } +} -- Gitblit v1.9.1