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.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) {
|
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));
|
|
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;
|
|
}
|
}
|