【ES三周年】SpringBoot整合elasticsearch存储抖音短视频数据实践_全球信息
大家好,我是小悟
ElasticSearch是一个分布式的开源搜索和分析引擎,适用于所有类型的数据,包括文本、数字、地理空间、结构化和非结构化数据。
Elasticsearch 以其简单的 REST 风格 API、分布式特性、速度和可扩展性而闻名,是 Elastic Stack 的核心组件;Elastic Stack 是适用于数据采集、充实、存储、分析和可视化的一组开源工具。
【资料图】
人们通常将 Elastic Stack 称为 ELK Stack(代指 Elasticsearch、Logstash 和 Kibana),目前 Elastic Stack 包括一系列丰富的轻量型数据采集代理,这些代理统称为 Beats,可用来向 Elasticsearch 发送数据。
这篇内容主要来说说SpringBoot整合elasticsearch存储抖音短视频数据,使得查询海量视频数据变得又快又顺畅。通过接口获取到抖音短视频数据时,调用save方法存储到elasticsearch。然后前端再调用pageQuery方法查询数据回显。
1、pom文件
引入elasticsearch依赖
org.springframework.boot spring-boot-starter-data-elasticsearch
2、Config文件
SpringBoot方便的地方就是在于可以自动装配,几个注解就搞定了传统SSM那种繁琐的xml配置,@Configuration,@AutoConfigureBefore,@EnableCaching。
@AutoConfigureBefore(RedisConfig.class)@EnableCachingpublic class ElasticConfig { @PostConstruct void init() { System.setProperty("es.set.netty.runtime.available.processors", "false"); } @Bean(name = "elasticsearchTemplate") public ElasticsearchTemplate elasticsearchTemplate(Client client, ElasticsearchConverter converter) { try { return new ElasticsearchTemplate(client, converter); } catch (Exception ex) { throw new IllegalStateException(ex); } } @Bean public ElasticsearchConverter elasticsearchConverter( SimpleElasticsearchMappingContext mappingContext) { return new MappingElasticsearchConverter(mappingContext); } @Bean public SimpleElasticsearchMappingContext mappingContext() { return new SimpleElasticsearchMappingContext(); }}
注意,如果你的项目已经配置了redis,务必给AutoConfigureBefore这个注解传一个你的redis配置类,告诉spring,要在redis配置前先配置装载Elastic,否则会报错。
3、application.yml文件
在application.yml文件写以下几行
data: elasticsearch: cluster-name: xxx-elastic cluster-nodes: 服务器ip地址:9300
注意,cluster-name的值要和config/elasticsearch.yml里面写的一致,如果config/elasticsearch.yml里面network.host是0.0.0.0,那么表示可以让任何计算机节点访问到。配置文件里端口是9200,这边是9300,这是因为9200是http访问的端口,9300是Java访问的端口,切记不要写错了哦。
做完elasticsearch的基本配置后,就可以尽情的撸接口了。
4、Repository
创建Repository,继承ElasticsearchRepository,类似jpa。这样简单的CRUD就有了
public interface EsHotSentenceVideoRepository extends ElasticsearchRepository {}
5、接口Service
public interface EsHotSentenceVideoService { HotSentenceVideoEntity save(HotSentenceVideoEntity entity); void delete(HotSentenceVideoEntity entity); void deleteAll(); Iterable getAll(); List getByTitle(String title); Page pageQuery(Integer pageNo, Integer pageSize); Page pageQuery(Integer pageNo, Integer pageSize, String keyWord,String startTime,String endTime);}
6、实现类ServiceImpl
@Service("esHotSentenceVideoService")public class EsHotSentenceVideoServiceImpl implements EsHotSentenceVideoService { @Autowired private EsHotSentenceVideoRepository esHotSentenceVideoRepository; @Override public HotSentenceVideoEntity save(HotSentenceVideoEntity entity) { return esHotSentenceVideoRepository.save(entity); } @Override public void delete(HotSentenceVideoEntity entity) { esHotSentenceVideoRepository.delete(entity); } @Override public void deleteAll() { esHotSentenceVideoRepository.deleteAll(); } @Override public Iterable getAll() { return esHotSentenceVideoRepository.findAll(); } @Override public List getByTitle(String title) { List list = new ArrayList<>(); MatchQueryBuilder matchQueryBuilder = new MatchQueryBuilder("title", title); Iterable iterable = esHotSentenceVideoRepository.search(matchQueryBuilder); iterable.forEach(e->list.add(e)); return list; } @Override public Page pageQuery(Integer pageNo, Integer pageSize) { SearchQuery searchQuery = new NativeSearchQueryBuilder() .withPageable(PageRequest.of(pageNo, pageSize)) .build(); return esHotSentenceVideoRepository.search(searchQuery); } /** * @param pageNo * @param pageSize * @param keyWord * @param startTime * @param endTime * @return */ @Override public Page pageQuery(Integer pageNo, Integer pageSize, String keyWord,String startTime,String endTime) { Pageable pageable = PageRequest.of(pageNo, pageSize); NativeSearchQueryBuilder nativeSearchQueryBuilder = new NativeSearchQueryBuilder(); //分页 nativeSearchQueryBuilder.withPageable(pageable); //过滤 if (StringUtils.isNotEmpty(startTime) && StringUtils.isNotEmpty(endTime)) { BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery(); Long startTimeLong = DateUtils.strToLong(startTime); Long endTimeLong = DateUtils.strToLong(endTime); boolQueryBuilder.must(QueryBuilders.rangeQuery("publicTime").from(startTimeLong).to(endTimeLong)); nativeSearchQueryBuilder.withFilter(boolQueryBuilder); } //搜索 if (StringUtils.isNotEmpty(keyWord)) { nativeSearchQueryBuilder.withQuery(QueryBuilders.matchPhraseQuery("sentence",keyWord)); } nativeSearchQueryBuilder.withSort(SortBuilders.fieldSort("diggCount").order(SortOrder.DESC)); NativeSearchQuery searchQuery = nativeSearchQueryBuilder.build(); return esHotSentenceVideoRepository.search(searchQuery); }}
7、总结
查询速度,一个字,快,两个字,很快,三个字,超级快,优越性不仅体现在速度上,更值得一提的是ES还可以做分词检索,很方便。
您的一键三连,是我更新的最大动力,谢谢
山水有相逢,来日皆可期,谢谢阅读,我们再会
我手中的金箍棒,上能通天,下能探海
关键词:
-
【ES三周年】SpringBoot整合elasticsearch存储抖音短视频数据实践_全球信息
2023-03-20 -
精选!最新排名!国乒女单7人进入世界前十!王曼昱反超王艺迪重回前三
2023-03-20 -
馄饨汤怎样做_馄饨汤的做法
2023-03-20 -
苏丹政治和解进程官方发言人哈立德·奥马尔·优素福当地时间19日晚在首都喀土穆召开新闻发布会,宣布苏丹最终和平协议将于4月1日签署,过渡时期宪法将于4月6日签署,4月11日起开始组建过渡机构 环球速看
2023-03-20 -
每日速读!民办非营利社区卫生服务站药品是否可以自主定价?市场监管总局回复
2023-03-20 -
全英赛收获两冠!国羽拿到了最想要的那枚金牌
2023-03-20 -
德方纳米:融资净买入461.48万元,融资余额9.74亿元(03-17)-世界实时
2023-03-20 -
当前最新:摆摊卖烧饼如何做_摆摊卖的烧饼做法介绍
2023-03-20 -
澄江:旅游质量再升级 志愿服务暖心游 环球新动态
2023-03-19 -
猕猴桃不能和什么一起吃有毒(猕猴桃不能和什么一起吃)
2023-03-19 -
不可错过的C和C++跨平台IDE集成开发环境CLion软件下载安装激活汉化教程_环球看点
2023-03-19 -
中国布局东盟,其实是为自己打造一个未来的市场 全球观点
2023-03-19 -
3d试机号是多少啊_3d试机号是多少|当前头条
2023-03-19 -
世界今日讯!扭绞方钢镀锌格栅理论重量_扭绞方钢
2023-03-19 -
林坦生态工业园_关于林坦生态工业园简述-世界信息
2023-03-18 -
降准0.25个百分点 有助于金融机构持续向实体经济让利-快讯
2023-03-18 -
室性早搏是怎么引起的_室性早搏怎么治疗
2023-03-18 -
当前速递!2023年北京体育中考调整为合格考:参与即满分
2023-03-18 -
03月18日06时广东珠海疫情数据 阳了以后为什么会腰疼?应该怎么办?
2023-03-18 -
焦点关注:大奥浮世澡堂在线播放_大奥浮世风吕mp4
2023-03-18 -
环球快看点丨县以下职务与职级并行规定_关于县以下机关建立公务员职务与职级并行制度的意见
2023-03-18 -
天天即时看!干旱致桂林漓江旅游船舶停航,排筏仍正常航行
2023-03-17 -
港股半导体板块走低,上海复旦跌超14% 全球视点
2023-03-17 -
当前观察:快剪辑如何剪切视频中的一部分_快剪辑如何剪切视频
2023-03-17 -
神经衰弱自然疗法/常见病自然疗法丛书_神经衰弱自然疗法
2023-03-17 -
传承长征精神 赓续红色血脉
2023-03-17 -
福建安溪:守护消费者权益提振消费信心
2023-03-17 -
华泰证券:房地产行业基本面迎来积极变化|热头条
2023-03-17 -
70 年代出生的人
2023-03-17 -
闻喜县气象局发布大雾黄色预警【Ⅲ级/较重】【2023-03-16】
2023-03-16
-
守住网络直播的伦理底线
2021-12-16 -
石窟寺文化需要基于保护的“新开发”
2021-12-16 -
电影工作者不能远离生活
2021-12-16 -
提升隧道安全管控能力 智慧高速让司乘安心
2021-12-16 -
人民财评:提升消费体验,服务同样重要
2021-12-16 -
卫冕?突破?旗手?——武大靖留给北京冬奥会三大悬念
2021-12-16 -
新能源车险专属条款出台“三电”系统、起火燃烧等都可保
2021-12-16 -
美术作品中的党史 | 第97集《窗外》
2021-12-16 -
基金销售业务违规!浦发银行厦门分行等被厦门证监局责令改正
2021-12-16 -
保持稳定发展有支撑——从11月“成绩单”看中国经济走势
2021-12-16