当前位置: 首页 > news >正文

elasticSearch从零整合springboot项目实操

 type会被弃用 ,就是说之后的elasticSearch中只会存在 索引(indices) 和  一行(document)  和字段(fields)

elasticSearch 和solr的区别最大的就是 es对应的 是 json的格式 。 solr有xml和josn等等。但是es更强

核心数据原理

对于某个字段搜索出来的结果有很多, 更具相似的设置对应的文档的权重进行排序。

就像是这样建立索引

             

        

ik分词器,如果想要自定义的搜索的标签可以自行加到ik分词器中。ik分词器作为一个插件,需要手动的添加到elasticSearch中的plugin中。 

分词算法,有ik_smart 和ik_max_word ,其中ik_smart为最少切分 ,ik_max_word是最细粒度切分。 

ik_max_word:能够将所有的可能都展示出来

ik_smart: 展示的比较少

如何定义自定义的分词

可以看见 狂神说,不是一个分词。

可以在ik分词器中自定义一个 狂神说

之后启动 es 和kibana 的bat ,再npm run start  页面head 

这样,狂神说就变成了一个分词

es是支持Rest风格的api

这里进行添加数据

这里尝试在同一个索引库中添加  类属于不同类型 的数据

结论:直接报错。 说在7.0版本上一个索引库只能够有一个类型 。可以看出 这个类型没有任何作用。  对应如前面说所的,type这个字段在8.0将会被删除。

其实这玩意本质就是一个数据库。

get 这就不用说了,

上手springboot整合es  Test

@SpringBootTest
class JueJiuApplicationTests {
@Autowired
private RedisTemplate redisTemplate;
@AutowiredTokenGenerate tokenGenerate;@AutowiredRestHighLevelClient highLevelClient;@AutowiredEssayService essayService;@Testvoid contextLoads() {}/**处理 Essay的数据** 这里将mysql的数据都batch到es中** */@Testvoid  mysqlAndES(){List<Essay> list = essayService.list();list.forEach(one->{System.out.println(one.toString());});}@Testvoid  createIndex() throws IOException {/*** 创建一个索引* */String   indexName = "juejiu";CreateIndexRequest  createIndexRequest = new CreateIndexRequest(indexName);highLevelClient.indices().create( createIndexRequest , RequestOptions.DEFAULT);/**查询索引的信息* *///            GetIndexRequest getIndexRequest = new GetIndexRequest(indexName);
//            GetIndexResponse getIndexResponse = highLevelClient
//                    .indices().get(getIndexRequest, RequestOptions.DEFAULT);
//            System.out.println("----------------打印出索引的信息" + getIndexResponse);/***  删除索引信息* */
//            DeleteIndexRequest  deleteIndexRequest = new DeleteIndexRequest(indexName)    ;
//            AcknowledgedResponse delete = highLevelClient.indices().delete(deleteIndexRequest, RequestOptions.DEFAULT);
//            System.out.println("----------------删除出索引的信息" + delete.toString());
//            System.out.println("----------------删除出索引的信息" + delete.isAcknowledged());}@Testvoid   saveToES() throws IOException {String   indexName = "juejiu";IPage<EssayDto> iPage = new Page<>();iPage.setCurrent(1);iPage.setSize(100);EssayVo essayVo = new EssayVo();IPage<EssayDto> page = essayService.getPage(iPage, essayVo);BulkRequest bulkRequest = new BulkRequest();page.getRecords().forEach(one->{IndexRequest indexRequest = new IndexRequest().source(JSON.toJSONString(one), XContentType.JSON).index(indexName);bulkRequest.add(indexRequest);});BulkResponse bulkResponse = highLevelClient.bulk(bulkRequest, RequestOptions.DEFAULT);System.out.println("---------bulk的结果"+ (!bulkResponse.hasFailures()));}@Test/***/void  searchResult() throws IOException {String   indexName = "juejiu";SearchRequest searchRequest = new SearchRequest(indexName);SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();Query query = new Query(4,1);searchSourceBuilder.from(query.getCurrent());searchSourceBuilder.size(query.getSize());/**** 添加查询条件* */searchRequest.source(searchSourceBuilder);SearchResponse search = highLevelClient.search(searchRequest, RequestOptions.DEFAULT);System.out.println(search);System.out.println("-----------");System.out.println(search.getHits());search.getHits().forEach(one->{System.out.println("单个的hit"+one.getSourceAsString());});}

springboot整合ES实现 论坛的 es替换查询

  String   indexName = "juejiu";SearchRequest searchRequest = new SearchRequest(indexName);SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();searchSourceBuilder.from(query.getCurrent());searchSourceBuilder.size(query.getSize());/**** 添加查询条件* */searchRequest.source(searchSourceBuilder);SearchResponse search = highLevelClient.search(searchRequest, RequestOptions.DEFAULT);/*** 暂停原代码  不返回page对象** */
//
//        System.out.println("-----------------------------"+query.toString());
//            System.out.println("-----------------------------"+essayVo.toString());
//        IPage<EssayDto> iPage = new Page<>();
//        iPage.setCurrent(query.getCurrent());
//        iPage.setSize(query.getSize());
//        IPage<EssayDto> list = essayService.getPage(iPage,essayVo);
//        HashMap hashMap = new HashMap<>();
//      list.getRecords().stream().map(one -> {
//            Date createTime = one.getCreateTime();
//            String essayTitle = one.getEssayTitle();
//            hashMap.put(createTime, essayTitle);
//            return  null;
//        }).collect(Collectors.toList());
//        System.out.println("----------------------------------------");
//        System.out.println(hashMap);IPage<EssayDto> iPage = new Page();List<EssayDto> list = new ArrayList<>();search.getHits().forEach(one->{Map<String, Object> sourceAsMap = one.getSourceAsMap();EssayDto essayDto = new EssayDto();essayDto.setEssayId((Integer) sourceAsMap.get("essayId"));essayDto.setEssayTitle(sourceAsMap.get("essayTitle").toString());essayDto.setEssayContext(sourceAsMap.get("essayContext").toString());essayDto.setEssayPageViewTimes((Integer) sourceAsMap.get("essayPageViewTimes"));essayDto.setCreateTime(Date.from(LocalDateTime.parse(sourceAsMap.get("createTime").toString(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")).atZone(ZoneId.systemDefault()).toInstant()));Map<String, Object> userMap = (Map<String, Object>) sourceAsMap.get("user");User user = new User();user.setId((Integer) userMap.get("id"));user.setAccount(userMap.get("account").toString());user.setPassword(userMap.get("password").toString());user.setAvatar(userMap.get("avatar").toString());user.setPhone(userMap.get("phone").toString());user.setRealName(userMap.get("realName").toString());user.setEmail(userMap.get("email").toString());user.setSex((Integer) userMap.get("sex"));
//            user.setBirthday(String.valueOf(Date.parse(userMap.get("birthday").toString())));essayDto.setUser(user);Map<String, Object> tagMap = (Map<String, Object>) sourceAsMap.get("tag");Tag tag = new Tag();tag.setTagId((Integer) tagMap.get("tagId"));tag.setTagName(tagMap.get("tagName").toString());essayDto.setTag(tag);essayDto.setUserId((Integer) sourceAsMap.get("userId"));essayDto.setEssayPageViewTimes((Integer) sourceAsMap.get("essayPageViewTimes"));essayDto.setCreateTime(Date.from(LocalDateTime.parse(sourceAsMap.get("createTime").toString(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")).atZone(ZoneId.systemDefault()).toInstant()));essayDto.setEssayId((Integer) sourceAsMap.get("essayId"));essayDto.setUser(user);essayDto.setTag(tag);list.add(essayDto);});iPage.setRecords(list);iPage.setCurrent(query.getCurrent());iPage.setSize(query.getSize());return Result.SUCCESS(iPage);

单体的es 实现easy

后续提供更新策略 和多条件等结果

相关文章:

elasticSearch从零整合springboot项目实操

type会被弃用 &#xff0c;就是说之后的elasticSearch中只会存在 索引&#xff08;indices&#xff09; 和 一行&#xff08;document&#xff09; 和字段&#xff08;fields&#xff09; elasticSearch 和solr的区别最大的就是 es对应的 是 json的格式 。 solr有xml和josn等…...

【Linux实践室】Linux高级用户管理实战指南:用户所属组变更操作详解

&#x1f308;个人主页&#xff1a;聆风吟_ &#x1f525;系列专栏&#xff1a;Linux实践室、网络奇遇记 &#x1f516;少年有梦不应止于心动&#xff0c;更要付诸行动。 文章目录 一. ⛳️任务描述二. ⛳️相关知识2.1 &#x1f514;Linux查看用户所属组2.1.1 &#x1f47b;使…...

C语言: 字符串函数(下)

片头 在上一篇中,我们介绍了字符串函数。在这一篇章中&#xff0c;我们将继续学习字符串函数&#xff0c;准备好了吗&#xff1f;开始咯&#xff01; 1.strncpy函数 1.1 strncpy函数的用法 strncpy是C语言中的一个字符串处理函数&#xff0c;它用于将一个字符串的一部分内容…...

WPF 数据绑定类属性 和数据更新

WPF中数据绑定是一个非常强大的功能&#xff0c;不仅可以绑定后台数据&#xff0c;还可以进行实时更新。 数据绑定实例 : 在后台创建模型类&#xff0c;然后在标签页面进行导入并绑定。 第一步: // 在后台创建模型类 public class MyData {public string Name { get; set; }…...

使用云服务器搭建CentOS操作系统

云服务器搭建CentOS操作系统 前言一、购买云服务器腾讯云阿里云华为云 二、使用 XShell 远程登陆到 Linux关于 Linux 桌面下载 XShell安装XShell查看 Linux 主机 ip使用 XShell 登陆主机 三、无法使用密码登陆的解决办法 前言 CentOS是一种基于Red Hat Enterprise Linux&#…...

unity的引用传递和数组的联系

引用传递 //引用传递 static void SetY(out int x,out int y ){x 0;y 0;x 1000;}static void Main(string[] args){int x 0;int y 10;SetY(out x, out y);Console.WriteLine($"x{x},y{y}");} 结果是&#xff1a;x1000&#xff0c;y0 数组的引用传递 数组值…...

Android bug Unresolved reference: BR

新建项目后 导入viewBinding 编译后提示 Unresolved reference: BR 解决办法 app 目录下 build.gradle 中 plugins 节点 添加 id kotlin-kapt参考 https://stackoverflow.com/questions/77409050/could-not-find-androidx-corecore-ktx1-8-10...

Unity DOTS1.0 入门(1) ECS机制与概述

ECS机制与概述 Entity:实体 由一个一个的Component组合在一起&#xff0c;是连续的内存布局。通过EnitityManager来负责高效的分配和释放相关entity. World:世界 一个entity的集合,在当前世界里面&#xff0c;每个Entity都有唯一不同的entityld;运行时Unity会自动创建一个D…...

root管理员用户启动kibana报错

问题描述: CentOS7.9.2009环境,以root管理员用户启动kibana7.11.1程序报如下错误: Kibana should not be run as root. Use --allow-root to continue. [root@elasticsearch bin]# whoami root [root@elasticsearch bin]# pwd /usr/local/kibana-7.11.1-linux-x86_64/bi…...

【leetcode面试经典150题】50. 插入区间(C++)

【leetcode面试经典150题】专栏系列将为准备暑期实习生以及秋招的同学们提高在面试时的经典面试算法题的思路和想法。本专栏将以一题多解和精简算法思路为主&#xff0c;题解使用C语言。&#xff08;若有使用其他语言的同学也可了解题解思路&#xff0c;本质上语法内容一致&…...

第二期书生浦语大模型训练营第三次笔记

RAG RAG是什么&#xff1f; RAG&#xff08;Retrieval Augmented Generation&#xff09;技术&#xff0c;通过检索与用户输入相关的信息片段&#xff0c;并结合外部知识库来生成更准确、更丰富的回答。解决 LLMs 在处理知识密集型任务时可能遇到的挑战, 如幻觉、知识过时和缺…...

SpringMVC(一)【入门】

前言 学完了大数据基本组件&#xff0c;SpringMVC 也得了解了解&#xff0c;为的是之后 SpringBoot 能够快速掌握。SpringMVC 可能在大数据工作中用的不多&#xff0c;但是 SSM 毕竟是现在就业必知必会的东西了。SpringBoot 在数仓开发可能会经常用到&#xff0c;所以不废话学吧…...

SQL Server详细使用教程

SQL Server 是 Microsoft 公司开发的关系型数据库管理系统&#xff08;RDBMS&#xff09;&#xff0c;用于存储和检索数据。以下是 SQL Server 的详细使用教程&#xff1a; 目录 1. 安装 SQL Server 2. 连接到 SQL Server 3. 创建数据库 4. 创建数据表 5. 插入数据 6. 查…...

Spring Boot项目启动时执行指定的方法

项目场景&#xff1a; 本文介绍Spring Boot项目启动时执行指定的方法两种常用方式和他们之间的区别。 实现方案&#xff1a; 方式一&#xff1a;使用注解PostConstruct Component public class PostConstructTest {PostConstructpublic void postConstruct() {System.out.prin…...

红豆Cat 1开源|项目三: 从0-1设计一款HTTP版本RTU(支持GNSS)产品的软硬件全过程

HTTP版RTU&#xff08;支持GNSS&#xff09;项目概述 RTU&#xff08;Remote Terminal Unit&#xff09;&#xff0c;中文即远程终端控制系统&#xff0c;负责对现场信号、工业设备的监测和控制。RTU是构成企业综合自动化系统的核心装置&#xff0c;通常由信号输入/出模块、微…...

在 Mac 上配置高级内容缓存设置

在 Mac 上配置高级内容缓存设置 您可以使用高级配置参数针对网络配置微调内容缓存。 您可以在“终端”中使用命令行或通过修改“/资源库/Preferences/com.apple.AssetCache.plist”文件中的键值&#xff0c;来设定内容缓存的高级配置参数。若要使某些更改生效&#xff0c;必须…...

算法与数据结构 顺序栈(C++)

随机产生10个100以内的整数建立一个顺序栈&#xff0c;从栈顶到栈底依次显示栈内元素&#xff1b;从键盘输入出栈元素个数 n (1< n <10)&#xff0c;将 n 个元素依次出栈并显示出栈元素&#xff0c;再显示此时栈顶元素。 #include <iostream> #include <cstd…...

【WSL】在WIN11安装并使用Linux子系统(Ubuntu)

前言&#xff1a; 最近买了4060Ti 16G&#xff0c;可以尝试在本地实验大模型。一开始尝试使用Vmware搞Linux&#xff0c;发现没有办法加载GPU&#xff08;或者另外有办法没找到&#xff09;。所以只剩下了两条路&#xff1a;要么搞双系统&#xff0c;要么使用WSL&#xff08;W…...

【vim 学习系列文章 20 -- a:mode 的值有哪些?】

请阅读【嵌入式开发学习必备专栏 之 Vim】 文章目录 a:mode 的值有哪些?举例Vim 底部状态栏设置 a:mode 的值有哪些? 在 Vim 脚本语言中&#xff0c;a:mode 常常用于函数内部&#xff0c;以获取该函数被调用时 Vim 正处于的模式。它主常用于那些可以从不同模式下被调用的函数…...

sed命令多行处理

1. sed 如何工作的 sed 维护两个空间&#xff1a; 模式空间保留空间 sed是以行为周期来处理文本的。 sed从输入流中读取一行&#xff0c;去掉最后的换行符&#xff0c;把它放入模式空间。随后执行命令&#xff0c;每个命令都有关联的地址和条件&#xff0c;只有匹配时才执行…...

多云管理“拦路虎”:深入解析网络互联、身份同步与成本可视化的技术复杂度​

一、引言&#xff1a;多云环境的技术复杂性本质​​ 企业采用多云策略已从技术选型升维至生存刚需。当业务系统分散部署在多个云平台时&#xff0c;​​基础设施的技术债呈现指数级积累​​。网络连接、身份认证、成本管理这三大核心挑战相互嵌套&#xff1a;跨云网络构建数据…...

Chapter03-Authentication vulnerabilities

文章目录 1. 身份验证简介1.1 What is authentication1.2 difference between authentication and authorization1.3 身份验证机制失效的原因1.4 身份验证机制失效的影响 2. 基于登录功能的漏洞2.1 密码爆破2.2 用户名枚举2.3 有缺陷的暴力破解防护2.3.1 如果用户登录尝试失败次…...

python打卡day49

知识点回顾&#xff1a; 通道注意力模块复习空间注意力模块CBAM的定义 作业&#xff1a;尝试对今天的模型检查参数数目&#xff0c;并用tensorboard查看训练过程 import torch import torch.nn as nn# 定义通道注意力 class ChannelAttention(nn.Module):def __init__(self,…...

Prompt Tuning、P-Tuning、Prefix Tuning的区别

一、Prompt Tuning、P-Tuning、Prefix Tuning的区别 1. Prompt Tuning(提示调优) 核心思想:固定预训练模型参数,仅学习额外的连续提示向量(通常是嵌入层的一部分)。实现方式:在输入文本前添加可训练的连续向量(软提示),模型只更新这些提示参数。优势:参数量少(仅提…...

新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案

随着新能源汽车的快速普及&#xff0c;充电桩作为核心配套设施&#xff0c;其安全性与可靠性备受关注。然而&#xff0c;在高温、高负荷运行环境下&#xff0c;充电桩的散热问题与消防安全隐患日益凸显&#xff0c;成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...

【配置 YOLOX 用于按目录分类的图片数据集】

现在的图标点选越来越多&#xff0c;如何一步解决&#xff0c;采用 YOLOX 目标检测模式则可以轻松解决 要在 YOLOX 中使用按目录分类的图片数据集&#xff08;每个目录代表一个类别&#xff0c;目录下是该类别的所有图片&#xff09;&#xff0c;你需要进行以下配置步骤&#x…...

【HarmonyOS 5 开发速记】如何获取用户信息(头像/昵称/手机号)

1.获取 authorizationCode&#xff1a; 2.利用 authorizationCode 获取 accessToken&#xff1a;文档中心 3.获取手机&#xff1a;文档中心 4.获取昵称头像&#xff1a;文档中心 首先创建 request 若要获取手机号&#xff0c;scope必填 phone&#xff0c;permissions 必填 …...

分布式增量爬虫实现方案

之前我们在讨论的是分布式爬虫如何实现增量爬取。增量爬虫的目标是只爬取新产生或发生变化的页面&#xff0c;避免重复抓取&#xff0c;以节省资源和时间。 在分布式环境下&#xff0c;增量爬虫的实现需要考虑多个爬虫节点之间的协调和去重。 另一种思路&#xff1a;将增量判…...

Windows安装Miniconda

一、下载 https://www.anaconda.com/download/success 二、安装 三、配置镜像源 Anaconda/Miniconda pip 配置清华镜像源_anaconda配置清华源-CSDN博客 四、常用操作命令 Anaconda/Miniconda 基本操作命令_miniconda创建环境命令-CSDN博客...

django blank 与 null的区别

1.blank blank控制表单验证时是否允许字段为空 2.null null控制数据库层面是否为空 但是&#xff0c;要注意以下几点&#xff1a; Django的表单验证与null无关&#xff1a;null参数控制的是数据库层面字段是否可以为NULL&#xff0c;而blank参数控制的是Django表单验证时字…...