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会被弃用 ,就是说之后的elasticSearch中只会存在 索引(indices) 和 一行(document) 和字段(fields) elasticSearch 和solr的区别最大的就是 es对应的 是 json的格式 。 solr有xml和josn等…...
【Linux实践室】Linux高级用户管理实战指南:用户所属组变更操作详解
🌈个人主页:聆风吟_ 🔥系列专栏:Linux实践室、网络奇遇记 🔖少年有梦不应止于心动,更要付诸行动。 文章目录 一. ⛳️任务描述二. ⛳️相关知识2.1 🔔Linux查看用户所属组2.1.1 👻使…...
C语言: 字符串函数(下)
片头 在上一篇中,我们介绍了字符串函数。在这一篇章中,我们将继续学习字符串函数,准备好了吗?开始咯! 1.strncpy函数 1.1 strncpy函数的用法 strncpy是C语言中的一个字符串处理函数,它用于将一个字符串的一部分内容…...
WPF 数据绑定类属性 和数据更新
WPF中数据绑定是一个非常强大的功能,不仅可以绑定后台数据,还可以进行实时更新。 数据绑定实例 : 在后台创建模型类,然后在标签页面进行导入并绑定。 第一步: // 在后台创建模型类 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}");} 结果是:x1000,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组合在一起,是连续的内存布局。通过EnitityManager来负责高效的分配和释放相关entity. World:世界 一个entity的集合,在当前世界里面,每个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题】专栏系列将为准备暑期实习生以及秋招的同学们提高在面试时的经典面试算法题的思路和想法。本专栏将以一题多解和精简算法思路为主,题解使用C语言。(若有使用其他语言的同学也可了解题解思路,本质上语法内容一致&…...
第二期书生浦语大模型训练营第三次笔记
RAG RAG是什么? RAG(Retrieval Augmented Generation)技术,通过检索与用户输入相关的信息片段,并结合外部知识库来生成更准确、更丰富的回答。解决 LLMs 在处理知识密集型任务时可能遇到的挑战, 如幻觉、知识过时和缺…...
SpringMVC(一)【入门】
前言 学完了大数据基本组件,SpringMVC 也得了解了解,为的是之后 SpringBoot 能够快速掌握。SpringMVC 可能在大数据工作中用的不多,但是 SSM 毕竟是现在就业必知必会的东西了。SpringBoot 在数仓开发可能会经常用到,所以不废话学吧…...
SQL Server详细使用教程
SQL Server 是 Microsoft 公司开发的关系型数据库管理系统(RDBMS),用于存储和检索数据。以下是 SQL Server 的详细使用教程: 目录 1. 安装 SQL Server 2. 连接到 SQL Server 3. 创建数据库 4. 创建数据表 5. 插入数据 6. 查…...
Spring Boot项目启动时执行指定的方法
项目场景: 本文介绍Spring Boot项目启动时执行指定的方法两种常用方式和他们之间的区别。 实现方案: 方式一:使用注解PostConstruct Component public class PostConstructTest {PostConstructpublic void postConstruct() {System.out.prin…...
红豆Cat 1开源|项目三: 从0-1设计一款HTTP版本RTU(支持GNSS)产品的软硬件全过程
HTTP版RTU(支持GNSS)项目概述 RTU(Remote Terminal Unit),中文即远程终端控制系统,负责对现场信号、工业设备的监测和控制。RTU是构成企业综合自动化系统的核心装置,通常由信号输入/出模块、微…...
在 Mac 上配置高级内容缓存设置
在 Mac 上配置高级内容缓存设置 您可以使用高级配置参数针对网络配置微调内容缓存。 您可以在“终端”中使用命令行或通过修改“/资源库/Preferences/com.apple.AssetCache.plist”文件中的键值,来设定内容缓存的高级配置参数。若要使某些更改生效,必须…...
算法与数据结构 顺序栈(C++)
随机产生10个100以内的整数建立一个顺序栈,从栈顶到栈底依次显示栈内元素;从键盘输入出栈元素个数 n (1< n <10),将 n 个元素依次出栈并显示出栈元素,再显示此时栈顶元素。 #include <iostream> #include <cstd…...
【WSL】在WIN11安装并使用Linux子系统(Ubuntu)
前言: 最近买了4060Ti 16G,可以尝试在本地实验大模型。一开始尝试使用Vmware搞Linux,发现没有办法加载GPU(或者另外有办法没找到)。所以只剩下了两条路:要么搞双系统,要么使用WSL(W…...
【vim 学习系列文章 20 -- a:mode 的值有哪些?】
请阅读【嵌入式开发学习必备专栏 之 Vim】 文章目录 a:mode 的值有哪些?举例Vim 底部状态栏设置 a:mode 的值有哪些? 在 Vim 脚本语言中,a:mode 常常用于函数内部,以获取该函数被调用时 Vim 正处于的模式。它主常用于那些可以从不同模式下被调用的函数…...
sed命令多行处理
1. sed 如何工作的 sed 维护两个空间: 模式空间保留空间 sed是以行为周期来处理文本的。 sed从输入流中读取一行,去掉最后的换行符,把它放入模式空间。随后执行命令,每个命令都有关联的地址和条件,只有匹配时才执行…...
Secure Copy Protocol or SCP - 安全拷贝协议
Secure Copy Protocol or SCP - 安全拷贝协议 1. scp 文件传输1.1. 将远程文件拷贝到本地1.2. 将本地文件拷贝到远程1.3. 将远程目录拷贝到本地 References Secure Copy (remote file copy program) The SCP program is a software tool implementing the SCP protocol as a s…...
Java面试题:什么是Java的值传递和引用传递?列举其应用场景,并说明其特点
在Java中,值传递和引用传递是两种不同的参数传递机制。它们在Java程序中扮演着重要的角色,影响着方法如何接收和处理参数。了解这两种传递机制对于编写高效、可靠的Java代码至关重要。 值传递(Pass by Value) 值传递是指在调用方…...
Java 基于微信小程序的智能停车场管理小程序
博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇…...
python基础——类型注解【变量,函数,Union】
📝前言: 上一篇文章Python基础——面相对象的三大特征提到,python中的多态,python中,类型是动态的,这意味着我们不需要在声明变量时指定其类型。然而,这可能导致运行时错误,因为我们…...
人工智能研究生前置知识—科学计算库numpy
人工智能研究生前置知识—科学计算库numpy numpy是python中做科学计算的基础库,对数组进行操作 整个numpy的操作和使用比较简单因此可以通过案例的学习掌握基本的用法在之后的学习中不断的进行熟悉和补充 创建数组(矩阵 ) 创建的ndarray数组…...
element UI 设置type=“textarea“ 禁止输入框缩放
背景 在 Element UI 中,当您使用 el-input 组件并设置 type"textarea" 时,默认情况下,用户可以通过拖动输入框的右下角来调整其大小。如果您想禁止这种缩放行为,需要使用 CSS 来覆盖默认的浏览器行为。 注意上图&#x…...
Rust腐蚀服务器常用参数设定详解
Rust腐蚀服务器常用参数设定详解 大家好我是艾西,一个做服务器租用的网络架构师上期我们分享了rust腐蚀服务器的windows系统搭建方式,其中启动服务器bat参数因为涉及的东西比较多所以想通过这篇文章给大家做一下详细的分享。 (注本文中xxxx…...
无人机巡检技术革命性变革光伏电站运维管理
在中国广袤的大地上,光伏电站如雨后春笋般崛起,晶体硅组件板在阳光下熠熠生辉,为人们带来了源源不断的绿色能源。然而,随着光伏产业的迅猛发展,电站运维管理面临着前所未有的挑战。而无人机巡检技术的引入,…...
【学习】软件信创测试中,如何做好兼容性适配
在软件信创测试的领域中,兼容性适配是至关重要的一环。如何确保软件在不同的操作系统、硬件设备和软件环境中稳定运行,是每个测试人员需要面对的挑战。本文将从几个方面探讨如何做好兼容性适配,以提高软件的稳定性和用户体验。 首先…...
阿里云ACK k8s集群迁移
1、创建k8s集群 阿里云ACK创建 2、创建所需的第三方插件 ACK ingress创建 3、导出原有ACK集群配置 包含deployment、service、ingress、PersistentVolumeClaim 执行命令 kubectl get deployment,service,secret,ingress,PersistentVolumeClaim -n <namespace_name> -o y…...
织梦是怎么做网站/新出的app推广在哪找
叶问《叶问》是知数堂新设计的互动栏目,不定期给大家提供技术知识小贴士,形式不限,或提问、或讨论均可,并在当天发布答案,让大家轻轻松松利用碎片时间就可以学到最实用的知识点。2018年11月6日,周二Show pr…...
试用网站建设/电子商务seo名词解释
作者简介 青花瓷的平方,携程技术专家,主要从事无线开发,负责携程支付iOS相关开发工作。一、引言Combine.framework 是Apple在2019 WWDC 上基于Swift推出的函数响应框架(Functional Reactive Programming),支持Apple全平…...
唐山网站制作app/2023年最新新闻简短摘抄
文章目录前言一、四大基础理论1.拜占庭将军问题2.CAP 理论3.ACID 理论4.BASE 理论二、八大分布式协议和算法1.Paxos 算法2.Raft 算法3.Gossip 协议算法4.Quorum NWR 算法5.一致性 Hash 算法6.FBFT 算法7.POW 算法8.ZAB 协议总结前言 本文将系统介绍有关分布式有关的理论基础和相…...
网站做好后怎么做seo/免费制作网站app
#!/usr/bin/env python#! _*_ coding:utf-8 _*_ #注:多实例DB数据,my.conf,sock文件目录要统一#每个实例要建有shutdown权限mt_user用户 import os,sysimport socket myd /usr/local/mysql/bin/mysqld#1myadmin /usr/local/mysql/bin/mysqladminm_user rootm_password exsd…...
用vs2012做网站首页/站长工具忘忧草
iOS 10正式版定于9月13日推送,目前GM版已经可以下载。现在,苹果正式关闭了iOS 9.3.4的认证,这意味着iOS 9.3.5将不能再降级。目前iOS 9.3.4并不能越狱(需9.3.3以下),而且存在所谓iOS史上最大的一个远程执行…...
成品网站安装/最近新闻大事
SPI是一种总线协议。 总线,一个主设配(FPGA)只用三四个引脚和n个从设备进行通信。 例如FPGA通过SPI配置SI4133频综模块。 spi是一种通信协议。但是有时候我们看到对spi进行配置,配置什么时钟极性(cpol)时钟…...