
本次学习的是HighLevel版本
有需要的可以直接联系本人
初始工程创建成功后,目录结构如下所示

HotelDoc后续会说到配置application.yml
在spring层级下添加es的服务端路径配置
elasticsearch:
rest:
uris:
- http://192.168.222.135:9200
导入相关依赖
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.8.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.coolman.hotel</groupId>
<artifactId>hotel-demo</artifactId>
<name>hotel-demo</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.1.1</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.27</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
</dependency>
<!--es的RestAPI依赖-->
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-high-level-client</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<excludes>
<exclude>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
</build>
</project>
编写测试类,验证是否可以正常连接
package com.coolman.hotel.test;
import lombok.extern.slf4j.Slf4j;
import org.elasticsearch.client.RestHighLevelClient;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
@Slf4j
public class TestConnectES {
@Autowired
private RestHighLevelClient restHighLevelClient;
@Test
public void testConnect() {
log.info(restHighLevelClient + "");
}
}

代码如下所示
/**
* 创建索引测试
*/
@Test
public void testCreateIndex() throws IOException {
// 1. 获取索引操作对象
IndicesClient indicesClient = restHighLevelClient.indices();
// 2. 创建索引对象
CreateIndexRequest request = new CreateIndexRequest("hotel");// 相当于DSL语句的 PUT hotel 请求,但是还没执行
// 3. 执行操作
CreateIndexResponse response = indicesClient.create(request, RequestOptions.DEFAULT);
// 4. 获取结果
log.info(response.isAcknowledged() + "");
}
运行结果如下所示

Kibana验证

代码如下所示
因为创建映射需要DSL语句,所以先在kibana编写如下语句
DELETE hotel
GET hotel/_mapping
# 分析hotel索引库的映射结构
# index属性:是否建立索引,默认值true,如果该字段不用查询,则设置false
# copy_to: 把指定字段的值拷贝到另一个字段上
PUT hotel
{
"mappings": {
"properties": {
"id": {
"type": "keyword"
},
"name": {
"type": "text",
"analyzer": "ik_smart",
"copy_to": "all"
},
"address": {
"type": "text",
"analyzer": "ik_smart"
},
"price": {
"type": "integer"
},
"score": {
"type": "integer"
},
"brand": {
"type": "keyword",
"copy_to": "all"
},
"city": {
"type": "keyword"
},
"starName": {
"type": "keyword"
},
"business": {
"type": "keyword",
"copy_to": "all"
},
"location": {
"type": "geo_point"
},
"pic": {
"type": "keyword",
"index": false
},
"isAD": {
"type": "boolean"
},
"all": {
"type": "text",
"analyzer": "ik_smart"
}
}
}
}
创建成功后,再删除,将mappings中的字段复制到Java代码中
/**
* 添加映射测试
*/
@Test
public void testAddMapping() throws IOException {
// 1. 创建索引操作对象
IndicesClient indicesClient = restHighLevelClient.indices();
// 2. 创建索引
CreateIndexRequest request = new CreateIndexRequest("hotel");
// 3. 定义mapping语句
String mapping = "{\n" +
" \"properties\": {\n" +
" \"id\": {\n" +
" \"type\": \"keyword\"\n" +
" },\n" +
" \"name\": {\n" +
" \"type\": \"text\",\n" +
" \"analyzer\": \"ik_smart\",\n" +
" \"copy_to\": \"all\"\n" +
" },\n" +
" \"address\": {\n" +
" \"type\": \"text\",\n" +
" \"analyzer\": \"ik_smart\"\n" +
" },\n" +
" \"price\": {\n" +
" \"type\": \"integer\"\n" +
" },\n" +
" \"score\": {\n" +
" \"type\": \"integer\"\n" +
" },\n" +
" \"brand\": {\n" +
" \"type\": \"keyword\",\n" +
" \"copy_to\": \"all\"\n" +
" },\n" +
" \"city\": {\n" +
" \"type\": \"keyword\"\n" +
" },\n" +
" \"starName\": {\n" +
" \"type\": \"keyword\"\n" +
" },\n" +
" \"business\": {\n" +
" \"type\": \"keyword\",\n" +
" \"copy_to\": \"all\"\n" +
" },\n" +
" \"location\": {\n" +
" \"type\": \"geo_point\"\n" +
" },\n" +
" \"pic\": {\n" +
" \"type\": \"keyword\",\n" +
" \"index\": false\n" +
" },\n" +
" \"isAD\": {\n" +
" \"type\": \"boolean\"\n" +
" },\n" +
" \"all\": {\n" +
" \"type\": \"text\",\n" +
" \"analyzer\": \"ik_smart\"\n" +
" }\n" +
" }\n" +
" }";
request.mapping(mapping, XContentType.JSON); // 设置mappings字段,并指定其内容为json格式
// 4. 执行操作
CreateIndexResponse response = indicesClient.create(request, RequestOptions.DEFAULT);
// 5. 获取结果
log.info(response.isAcknowledged() + "");
}
运行结果如下所示

Kibana验证

代码如下所示
/**
* 删除索引测试
*/
@Test
public void testDeleteIndex() throws IOException {
// 1. 获取索引操作对象
IndicesClient indicesClient = restHighLevelClient.indices();
// 2. 获取索引对象
DeleteIndexRequest request = new DeleteIndexRequest("hotel"); // DELETE hotel
// 3. 执行操作
AcknowledgedResponse response = indicesClient.delete(request, RequestOptions.DEFAULT);
// 4. 获取结果
log.info("" + response.isAcknowledged());
}
比较简单,自行验证即可
代码如下所示
/**
* 添加文档测试
*/
// Jackson
private ObjectMapper objectMapper = new ObjectMapper();
@Test
public void testAddDocument() throws IOException {
// 先获取 指定的 hotel数据
Hotel hotel = hotelMapper.selectById(36934);
HotelDoc hotelDoc = new HotelDoc(hotel);
// 1. 创建请求对象
IndexRequest request = new IndexRequest("hotel").id(hotelDoc.getId().toString());
// 2. 填充文档内容
String json = objectMapper.writeValueAsString(hotelDoc);
request.source(json, XContentType.JSON);
// 3. 执行请求体对象
IndexResponse response = restHighLevelClient.index(request, RequestOptions.DEFAULT);
// 4. 获取结果
log.info(response.getId() + "");
}
Kibana验证

修改文档和添加文档操作一样,需要注意的是修改文档必须是已经存在的ID
代码如下所示
/**
* 修改文档
*/
@Test
public void testUpdateDocument() throws IOException {
// 1. 先获取 指定的 hotel 数据
Hotel hotel = hotelMapper.selectById(36934L);
HotelDoc hotelDoc = new HotelDoc(hotel);
// 2. 修改数据,如价格
hotelDoc.setPrice(1999999999);
// 3. 将 hotelDoc 对象转换为 JSON格式的数据
String json = objectMapper.writeValueAsString(hotelDoc);
// 4. 创建请求对象
IndexRequest request = new IndexRequest("hotel").id(hotelDoc.getId().toString());
request.source(json, XContentType.JSON);
// 5. 执行操作
IndexResponse response = restHighLevelClient.index(request, RequestOptions.DEFAULT);
log.info(response.getId());
}
Kibana验证

代码如下所示
/**
* 查询文档
*/
@Test
public void testSearchDocument() throws IOException {
Long id = 36934L;
// 1. 创建请求
GetRequest request = new GetRequest("hotel").id(id.toString());
// 2. 执行请求
GetResponse response = restHighLevelClient.get(request, RequestOptions.DEFAULT);
// 3. 取出结果
String hotelDocJson = response.getSourceAsString();
HotelDoc hotelDoc = objectMapper.readValue(hotelDocJson, HotelDoc.class);
log.info(hotelDoc.toString());
}
运行结果如下所示

代码如下所示
/**
* 删除文档
*/
@Test
public void testDeleteDocument() throws IOException {
Long id = 36934L;
// 1. 创建请求
DeleteRequest request = new DeleteRequest("hotel").id(id.toString());
// 2. 执行请求
DeleteResponse response = restHighLevelClient.delete(request, RequestOptions.DEFAULT);
log.info(response.getId());
}
Kibana验证

Bulk批量操作是将文档的增删改查一些列操作,通过一次请求全都做完。减少网络传输次数
应用场景
代码如下所示
/**
* 批量添加文档
*/
@Test
public void testBatchAddDocument() throws IOException {
// 1. 获取需要导入的数据
List<Hotel> hotelList = hotelMapper.selectList(null);
if(CollectionUtils.isNotEmpty(hotelList)) {
// 2. 创建批量操作请求对象
BulkRequest bulkRequest = new BulkRequest();
// 4. 获取文档映射的对象数据
for (Hotel hotel : hotelList) {
HotelDoc hotelDoc = new HotelDoc(hotel);
// 5. 创建请求对象
IndexRequest request = new IndexRequest("hotel").id(hotelDoc.getId().toString());;
// 6. 填充内容
String json = objectMapper.writeValueAsString(hotelDoc);
request.source(json, XContentType.JSON);
// 7. 将数据添加到批量操作对象中
bulkRequest.add(request);
}
// 8. 一次性执行批量操作
BulkResponse response = restHighLevelClient.bulk(bulkRequest, RequestOptions.DEFAULT);
log.info(response.status().toString());
}
}
运行结果如下所示

Kibana验证

目录前言滤波电路科普主要分类实际情况单位的概念常用评价参数函数型滤波器简单分析滤波电路构成低通滤波器RC低通滤波器RL低通滤波器高通滤波器RC高通滤波器RL高通滤波器部分摘自《LC滤波器设计与制作》,侵权删。前言最近需要学习放大电路和滤波电路,但是由于只在之前做音乐频谱分析仪的时候简单了解过一点点运放,所以也是相当从零开始学习了。滤波电路科普主要分类滤波器:主要是从不同频率的成分中提取出特定频率的信号。有源滤波器:由RC元件与运算放大器组成的滤波器。可滤除某一次或多次谐波,最普通易于采用的无源滤波器结构是将电感与电容串联,可对主要次谐波(3、5、7)构成低阻抗旁路。无源滤波器:无源滤波器,又称
@作者:SYFStrive @博客首页:HomePage📜:微信小程序📌:个人社区(欢迎大佬们加入)👉:社区链接🔗📌:觉得文章不错可以点点关注👉:专栏连接🔗💃:感谢支持,学累了可以先看小段由小胖给大家带来的街舞👉微信小程序(🔥)目录自定义组件-behaviors 1、什么是behaviors 2、behaviors的工作方式 3、创建behavior 4、导入并使用behavior 5、behavior中所有可用的节点 6、同名字段的覆盖和组合规则总结最后自定义组件-behaviors 1、什么是behaviorsbehaviors是小程序中,用于实现
需求:要创建虚拟机,就需要给他提供一个虚拟的磁盘,我们就在/opt目录下创建一个10G大小的raw格式的虚拟磁盘CentOS-7-x86_64.raw命令格式:qemu-imgcreate-f磁盘格式磁盘名称磁盘大小qemu-imgcreate-f磁盘格式-o?1.创建磁盘qemu-imgcreate-fraw/opt/CentOS-7-x86_64.raw10G执行效果#ls/opt/CentOS-7-x86_64.raw2.安装虚拟机使用virt-install命令,基于我们提供的系统镜像和虚拟磁盘来创建一个虚拟机,另外在创建虚拟机之前,提前打开vnc客户端,在创建虚拟机的时候,通过vnc
遍历文件夹我们通常是使用递归进行操作,这种方式比较简单,也比较容易理解。本文为大家介绍另一种不使用递归的方式,由于没有使用递归,只用到了循环和集合,所以效率更高一些!一、使用递归遍历文件夹整体思路1、使用File封装初始目录,2、打印这个目录3、获取这个目录下所有的子文件和子目录的数组。4、遍历这个数组,取出每个File对象4-1、如果File是否是一个文件,打印4-2、否则就是一个目录,递归调用代码实现publicclassSearchFile{publicstaticvoidmain(String[]args){//初始目录Filedir=newFile("d:/Dev");Datebeg
ES一、简介1、ElasticStackES技术栈:ElasticSearch:存数据+搜索;QL;Kibana:Web可视化平台,分析。LogStash:日志收集,Log4j:产生日志;log.info(xxx)。。。。使用场景:metrics:指标监控…2、基本概念Index(索引)动词:保存(插入)名词:类似MySQL数据库,给数据Type(类型)已废弃,以前类似MySQL的表现在用索引对数据分类Document(文档)真正要保存的一个JSON数据{name:"tcx"}二、入门实战{"name":"DESKTOP-1TSVGKG","cluster_name":"elasticsear
我试图在Ubuntu14.04中使用Curl安装RVM。我运行了以下命令:\curl-sSLhttps://get.rvm.io|bash-sstable出现如下错误:curl:(7)Failedtoconnecttoget.rvm.ioport80:Networkisunreachable非常感谢解决此问题的任何帮助。谢谢 最佳答案 在执行curl之前尝试这个:echoipv4>>~/.curlrc 关于ruby-在Ubuntu14.04中使用Curl安装RVM时出错,我们在Stack
安装Rails时,一切都很好,但后来,我写道:rails-v和输出:/home/toshiba/.rvm/rubies/ruby-2.2.1/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in`require':cannotloadsuchfile--rails/cli(LoadError)from/home/toshiba/.rvm/rubies/ruby-2.2.1/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in`r
文章目录1.任务背景2.任务目标3.相关知识点4.任务实操4.1安装配置JDK4.2启动FISCOBCOS4.3下载解压WeBASE-Front4.4拷贝sdk证书文件4.5启动节点4.6访问节点4.7检查运行状态5.任务总结1.任务背景FISCOBCOS其实是有控制台管理工具,用来对区块链系统进行各种管理操作。但是对于初学者来说,还是可视化界面更友好,本节就来介绍WeBASE管理平台,这是一款微众银行开源的自研区块链中间件平台,可以降低区块链使用的门槛,大幅提高区块链应用的开发效率。微众银行是腾讯牵头设立的民营银行,在国内民营银行里还是比较出名的。微众银行参与FISCOBCOS生态建设,一定
TCL脚本语言简介•TCL(ToolCommandLanguage)是一种解释执行的脚本语言(ScriptingLanguage),它提供了通用的编程能力:支持变量、过程和控制结构;同时TCL还拥有一个功能强大的固有的核心命令集。TCL经常被用于快速原型开发,脚本编程,GUI和测试等方面。•实际上包含了两个部分:一个语言和一个库。首先,Tcl是一种简单的脚本语言,主要使用于发布命令给一些互交程序如文本编辑器、调试器和shell。由于TCL的解释器是用C\C++语言的过程库实现的,因此在某种意义上我们又可以把TCL看作C库,这个库中有丰富的用于扩展TCL命令的C\C++过程和函数,所以,Tcl是
文章目录一、项目场景二、基本模块原理与调试方法分析——信源部分:三、信号处理部分和显示部分:四、基本的通信链路搭建:四、特殊模块:interpretedMATLABfunction:五、总结和坑点提醒一、项目场景 最近一个任务是使用simulink搭建一个MIMO串扰消除的链路,并用实际收到的数据进行测试,在搭建的过程中也遇到了不少的问题(当然这比vivado里面的debug好不知道多少倍)。准备趁着这个机会,先以一个很基本的通信链路对simulink基础和相关的debug方法进行总结。 在本篇中,主要记录simulink的基本原理和基本的SISO通信传输链路(QPSK方式),计划在下篇记