您的位置:首页 > 游戏 > 手游 > 企业网站设计目的和意义_中华会计网校_seo综合查询爱站_指数基金定投技巧

企业网站设计目的和意义_中华会计网校_seo综合查询爱站_指数基金定投技巧

2024/10/31 9:21:18 来源:https://blog.csdn.net/weixin_60523038/article/details/142365522  浏览:    关键词:企业网站设计目的和意义_中华会计网校_seo综合查询爱站_指数基金定投技巧
企业网站设计目的和意义_中华会计网校_seo综合查询爱站_指数基金定投技巧

SpringBoot中应该如何使用ElasticSearch呢

文章目录

目录

文章目录

至于ElasticSearch安装包,链接获取

三个都需要下载

windows运行方法

IK分词器使用

1.导库

2.创建Es类

3.操作搜索类接口

4.添加

5.搜索实现

6.创建索引可以使用Kibnan来创建



至于ElasticSearch安装包,链接获取

【超级会员V6】通过百度网盘分享的文件:kibana-7.17.9.zip
链接:https://pan.baidu.com/s/1VQ2vJeHApupd4EMybRbTXw?pwd=sv5q 
提取码:sv5q

【超级会员V6】通过百度网盘分享的文件:elasticsearch-analysis-ik-7.17.9.zip
链接:https://pan.baidu.com/s/1phSH4pXVIsund0zPzDu4QQ?pwd=sv5q 
提取码:sv5q

【超级会员V6】通过百度网盘分享的文件:elasticsearch-7.17.9.zip
链接:https://pan.baidu.com/s/1iX8OPMdTXZ7XWqptPJJtZQ?pwd=sv5q 
提取码:sv5q

三个都需要下载

windows运行方法

ElasticSearch运行方法
//找到Elasticsearch文件夹,
打开文件夹找到bin文件夹,然后cmd,输入elasticsearch.bat就运行起来了
//http://localhost:9200/

kibnan运行方法

//找到kibana文件夹,
打开文件夹找到bin文件夹,然后cmd,输入kibana.bat就运行起来了//浏览器输入这个就运行成功了//http://localhost:5601

IK分词器使用

在elasticsearch文件夹中找到plugins创建一个ik文件夹,然后把下载的最里面文件夹里面的内容保存到ik文件夹中,把这些文件放到请自行查看你自己的文件夹系统

 这里我的ElasticSearch文件中已经有IK分词器了,如果没有上面下载,自己替换就可以

1.导库

        <!--elasticsearch--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-elasticsearch</artifactId></dependency>

2.创建Es类

package com.xinggui.domain.esDto;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;
import java.util.Date;//这里的Document注解的意思是你要操作哪一个索引库,对比mysql就是你要操作哪一个类型的表格
@Document(indexName = "search_es_index")
@Data
public class SearchEsDto {//格式化时间private static final String DATE_TIME_PATTERN = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'";@Idprivate Long id;/*** 0:PSD 1:AI 2:CDR 3:3D*/private Integer type;/*** 图片大小*/private Long size;/*** 用户id*/private Long userId;/*** 图片水印路径*/private String imageWatherPath;/*** 文件名字*/private String fileName;/*** 设置分类id*/private Integer classificationId;/*** 分类id*/private Integer categoryId;/****/@Field(index = false, store = true, type = FieldType.Date, format = {}, pattern = DATE_TIME_PATTERN)private Date createtime;/****/@Field(index = false, store = true, type = FieldType.Date, format = {}, pattern = DATE_TIME_PATTERN)private Date updatetime;
}

3.操作搜索类接口

package com.xinggui.esdao;import com.xinggui.domain.esDto.SearchEsDto;
import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;//这里的第一个SearchEsDto替换为自己要操作的ES定义的类
public interface PostEsDao extends ElasticsearchRepository<SearchEsDto, Long> {}

4.添加

    @Testvoid contextLoads() throws ParseException {SearchEsDto searchEsDto = new SearchEsDto();searchEsDto.setId(1832693063378546690L);searchEsDto.setType(0);searchEsDto.setSize(41917441L);searchEsDto.setUserId(1187086337L);searchEsDto.setImageWatherPath("/avatar/output/output_1725783050205.png");searchEsDto.setFileName("蜘蛛侠海报");searchEsDto.setCategoryId(23);searchEsDto.setClassificationId(1);// 定义日期时间格式SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");searchEsDto.setCreatetime(sdf.parse("2024-09-09 07:45:33"));searchEsDto.setUpdatetime(sdf.parse("2024-09-09 07:45:33"));postEsDao.save(searchEsDto);System.out.println(searchEsDto.getId());}

5.搜索实现

@Resourceprivate ElasticsearchRestTemplate elasticsearchTemplate;/*** 搜索功能的实现* * @param searchName 搜索名称,用于匹配文件名* @param classificationId 分类ID,默认为1,用于过滤结果* @param categoryId 类别ID,用于进一步过滤结果* @param formatsId 格式ID,用于过滤结果* @param page 页码,默认为1,表示搜索结果的页码* @param size 页大小,默认为30,表示每页搜索结果的数量* @return 返回一个包含搜索结果的响应对象*/@GetMappingpublic ResponseVO<List<SearchEsDto>> search(String searchName,@RequestParam(defaultValue = "1") Integer classificationId,Integer categoryId,Integer formatsId,@RequestParam(defaultValue = "1") Integer page,@RequestParam(defaultValue = "30") Integer size){BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();// 构建查询条件if(classificationId != null && (classificationId > 0 && classificationId < 5)){boolQueryBuilder.must(QueryBuilders.termQuery("classificationId", classificationId));}if(categoryId != null && (categoryId > 10 && categoryId < 58)){boolQueryBuilder.must(QueryBuilders.termQuery("categoryId", categoryId));}if(formatsId != null && (formatsId > 0 && formatsId < 6)){boolQueryBuilder.must(QueryBuilders.termQuery("formatsId", formatsId));}if(StrUtil.isNotBlank(searchName)){boolQueryBuilder.must(QueryBuilders.matchQuery("fileName", searchName));}// 设置分页信息PageRequest pageRequest = PageRequest.of(page - 1, size);NativeSearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(boolQueryBuilder).withPageable(pageRequest).build();// 执行搜索SearchHits<SearchEsDto> searchHits = elasticsearchTemplate.search(searchQuery, SearchEsDto.class);List<SearchEsDto> contentList = searchHits.getSearchHits().stream().map(SearchHit::getContent).collect(Collectors.toList());// 返回搜索结果return getSuccessResponseVO(contentList);}

6.创建索引可以使用Kibnan来创建

PUT /search_es_index
{"mappings": {"properties": {"id": {"type": "long"},"type": {"type": "integer"},"size": {"type": "long"},"userId": {"type": "long"},"filePath": {"type": "keyword"},"imagePath": {"type": "keyword"},"imageWatherPath": {"type": "keyword"},"fileName": {"type": "text","analyzer": "ik_max_word","search_analyzer": "ik_smart","fields": {"keyword": {"type": "keyword","ignore_above": 256}}},"categoryId": {"type": "integer"},"createtime": {"type": "date",},"updatetime": {"type": "date",}}}
}

今日2024年09.19日,希望你快乐

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com