2. 数据结构分析即索引库的crud

1. 数据库脚本

DROP TABLE IF EXISTS `tb_hotel`;
CREATE TABLE `tb_hotel`  (`id` bigint(0) NOT NULL,`name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT '' COMMENT '酒店名称',`address` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '酒店地址',`price` int(0) NOT NULL COMMENT '价格',`score` int(0) NOT NULL COMMENT '酒店评分',`brand` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '酒店品牌',`city` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '所在城市',`star_name` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '酒店星级',`business` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '商圈',`latitude` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '维度',`longitude` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '精度',`pic` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '酒店图片',PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;SET FOREIGN_KEY_CHECKS = 1;

2. mappings的定义

put /hotel
{"mappings":{"properties":{//id需要进行crud操作,但是不需要分词"id":{"type":"keyword"},//需要进行检索,也需要进行分词"name":{"type":"text","analyzer":"ik_max_word","copy_to":"all"},//地址不需要检索"address":{"type":"keyword","index":false},//需要参与检索"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},"all":{"type":"text","analyzer":"ik_max_word"}}}
}

3. 初始化客户端

引入依赖

<dependency><groupId>org.elasticsearch.client</groupId><artifactId>elasticsearch-rest-high-level-client</artifactId><version>6.8.2</version></dependency><dependency><groupId>org.elasticsearch.client</groupId><artifactId>elasticsearch-rest-client</artifactId><version>6.8.2</version></dependency><dependency><groupId>org.elasticsearch</groupId><artifactId>elasticsearch</artifactId><version>6.8.2</version></dependency>

yml配置

elasticsearch:schema: httpaddress: 127.0.0.1:9200connectTimeout: 10000socketTimeout: 10000connectionRequestTimeout: 10000maxConnectNum: 100maxConnectPerRoute: 100

初始化客户端

import org.apache.http.HttpHost;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestClientBuilder;
import org.elasticsearch.client.RestHighLevelClient;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;import java.util.ArrayList;
import java.util.List;
/*** ElasticSearch 配置*/
@Configuration
@SuppressWarnings("all")
public class ElasticSearchConfig {/** 协议 */@Value("${elasticsearch.schema:http}")private String schema;/** 集群地址,如果有多个用“,”隔开 */@Value("${elasticsearch.address}")private String address;/** 连接超时时间 */@Value("${elasticsearch.connectTimeout:5000}")private int connectTimeout;/** Socket 连接超时时间 */@Value("${elasticsearch.socketTimeout:10000}")private int socketTimeout;/** 获取连接的超时时间 */@Value("${elasticsearch.connectionRequestTimeout:5000}")private int connectionRequestTimeout;/** 最大连接数 */@Value("${elasticsearch.maxConnectNum:100}")private int maxConnectNum;/** 最大路由连接数 */@Value("${elasticsearch.maxConnectPerRoute:100}")private int maxConnectPerRoute;public static final RequestOptions COMMON_OPTIONS;static {RequestOptions.Builder builder = RequestOptions.DEFAULT.toBuilder();COMMON_OPTIONS = builder.build();}@Beanpublic RestHighLevelClient restHighLevelClient() {// 拆分地址List<HttpHost> hostLists = new ArrayList<>();String[] hostList = address.split(",");for (String addr : hostList) {String host = addr.split(":")[0];String port = addr.split(":")[1];hostLists.add(new HttpHost(host, Integer.parseInt(port), schema));}// 转换成 HttpHost 数组HttpHost[] httpHost = hostLists.toArray(new HttpHost[]{});// 构建连接对象RestClientBuilder builder = RestClient.builder(httpHost);// 异步连接延时配置builder.setRequestConfigCallback(requestConfigBuilder -> {requestConfigBuilder.setConnectTimeout(connectTimeout);requestConfigBuilder.setSocketTimeout(socketTimeout);requestConfigBuilder.setConnectionRequestTimeout(connectionRequestTimeout);return requestConfigBuilder;});// 异步连接数配置builder.setHttpClientConfigCallback(httpClientBuilder -> {httpClientBuilder.setMaxConnTotal(maxConnectNum);httpClientBuilder.setMaxConnPerRoute(maxConnectPerRoute);return httpClientBuilder;});return new RestHighLevelClient(builder);}
}

引入客户端对象进行使用

@Autowired
private RestHighLevelClient restHighLevelClient;

4 创建索引库

private static final String hotelDSL = "{\n" +"  \"mappings\":{\n" +"    \"properties\":{\n" +"      \"id\":{\n" +"        \"type\":\"keyword\"\n" +"      },\n" +"      \"name\":{\n" +"        \"type\":\"text\",\n" +"        \"analyzer\":\"ik_max_word\",\n" +"        \"copy_to\":\"all\"\n" +"      },\n" +"      \"address\":{\n" +"        \"type\":\"keyword\",\n" +"        \"index\":false\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" +"      \"all\":{\n" +"        \"type\":\"text\",\n" +"        \"analyzer\":\"ik_max_word\"\n" +"      }\n" +"    }\n" +"  }\n" +"}";@Autowiredprivate RestHighLevelClient restHighLevelClient;@GetMapping("createIndex")public void createIndex() throws IOException {//1.创建request对象CreateIndexRequest request = new CreateIndexRequest("hotel");//2. 准备请求的DSL语句request.source(hotelDSL, XContentType.JSON);//3.发送请求,创建索引库restHighLevelClient.indices().create(request, RequestOptions.DEFAULT);}

查询创建结果:

get /hotel

5. 删除索引库

	//删除索引库@GetMapping("delIndex")public void delIndex() throws IOException {//1.创建request对象DeleteIndexRequest request = new DeleteIndexRequest("hotel");//3.发送请求,创建索引库restHighLevelClient.indices().delete(request, RequestOptions.DEFAULT);}

6 判断索引是否存在

	//判断索引库是否存在@GetMapping("existIndex")public boolean existIndex() throws IOException {GetIndexRequest request = new GetIndexRequest("hotel");boolean exist = restHighLevelClient.indices().exists(request,RequestOptions.DEFAULT);return exist;}

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/858049.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【推荐100个unity插件之21】unity实现多语言切换功能——Localization插件的使用

文章目录 前言优缺点优点缺点 安装创建配置选择语言选择默认语言创建多语言表数据创建key配置不同语言文本预加载绑定不同多语言文本数据&#xff0c;并显示语言切换自己编写按钮控制语言切换多语言图片切换在构建中使用Localization分析错误修复动态修改多语言文本内容参考推荐…

Django 模版变量

1&#xff0c;模版变量作用 模板变量使用“{{ 变量名 }}” 来表示模板变量前后可以有空格&#xff0c;模板变量名称&#xff0c;可以由数字&#xff0c;字母&#xff0c;下划线组成&#xff0c;不能包含空格模板变量还支持列表&#xff0c;字典&#xff0c;对象 2&#xff0c;…

一文解释IO端口与网络端口

计算机的端口可以分为两类&#xff1a;I/O端口和网络端口。每一类都有其特定的功能和应用。以下是对这两类端口的详细介绍。 I/O端口 定义 I/O端口是用于计算机与外围设备之间通信的接口。每个I/O端口都对应一个唯一的地址&#xff0c;操作系统和程序通过这些地址与设备通信。 …

SWAT模型【建模方法、实例应用、高级进阶技能】

第一部分&#xff1a;SWAT模型实践部分 一 SWAT模型及应用介绍 1.1 面源污染概要 1.2 SWAT模型及应用 1.3 SWAT模型原理 1.4 SWAT模型输入文件 1.5 ArcGIS与SWAT关系 二 SWAT模型中GIS 必备技术 2.1 GIS软件平台 2.2 ArcGIS10.6安…

APP终极瘦身方案

具体可参见 github.com/shwenzhang/… 优化META-INF MANIFEST.MF&#xff1a;是摘要文件&#xff0c;程序会遍历apk包中所有的文件&#xff0c;对非文件夹、非签名文件的文件&#xff0c;逐个编码生成摘要信息&#xff0c;并记录于此。如果逆向修改了任何文件&#xff0c;那么…

(2024.6.23)最新版MAVEN的安装和配置教程(超详细)

1.什么是MAVEN Maven是一个自动化构建工具&#xff0c;主要用于Java项目&#xff0c;它由Apache软件基金会维护。Maven能够自动化完成编译、测试、打包、发布等构建过程&#xff0c;可以大大提高开发效率&#xff0c;保证项目的质量。 下面我们从几个方面来介绍一下MAVEN的功能…

【嵌入式Linux】i.MX6ULL 时钟树——理论分析

文章目录 0. 时钟树结构0.1 参考手册 Chapter 18​: Clock Controller Module (CCM)0.2 时钟信号路径 1. 时钟源——晶振1.1 外部低频时钟 - CKIL1.1.1 CKIL 同步到 IPG_CLK 解释 1.2 外部高频时钟 - CKIH 和 内部振荡器1.3 总结1.4 缩写补充 2. PLL时钟2.1 i.MX6U 芯片 PLL 时…

八爪鱼现金流-025-工作的终极目标,不是为了成为更好的员工

工作的终极目标&#xff0c;不是为了成为更好的员工。 而是解放时间和收入自动化 打造自己的被动收入!!! 八爪鱼现金流 八爪鱼

Docker 如何支持 NVIDIA GPU

Docker 如何支持 GPU Docker 是一个强大的工具&#xff0c;可以帮助开发者构建、部署和运行应用程序。对于需要高性能计算的应用程序&#xff0c;例如机器学习、深度学习和科学计算&#xff0c;利用 GPU 可以大大提升计算效率。本文将详细介绍 Docker 如何支持 GPU 以及如何配…

CMMM Plus+ Calculus Update 超级游戏大作 游戏说明

资源链接 关卡编辑器 ◽️使用 WASD 移动视图。 ◽️LMB 放置单元格。 ◽️Space LMB 删除单元格。Ctrl Space LMB 删除所有相同类型的单元格。 ◽️Q / E 旋转单元格。 ◽️Z / X 在单元格类别之间切换。 ◽️键 1-9 快速选择单元格。 ◽️按 F 显示可拖动的图块。 ⌨️控…

微信小程序canvas2d频繁刷新图片时图片闪烁问题

问题&#xff1a;使用了拖动事件&#xff0c;需要频繁重绘canvas&#xff0c;导致图片闪烁。 原因&#xff1a;官方示例中&#xff0c;canvas2d需要手动加载图片&#xff0c;再在图片的onLoad函数绘制图片&#xff0c;延迟太高&#xff0c;导致刷新时图片闪烁。 解决&#xff1…

会声会影2024永久破解和谐版下载 包含激活码序列号

亲爱的创作伙伴们&#xff0c;今天我要分享一个让我的影视编辑生活大放异彩的神器——会声会影2024破解版本&#xff01;&#x1f389;&#x1f31f; &#x1f308;**功能全面升级**&#xff1a;作为一款专业的视频编辑软件&#xff0c;会声会影2024破解版本不仅继承了之前版本…

Springboot应用的信创适配

CentOS7在2024.6.30停止维护后&#xff0c;可替代的Linux操作系统-CSDN博客 全面国产化之路-信创-CSDN博客 信创适配评测-CSDN博客 Springboot应用的信创适配 Springboot应用的信创适配&#xff0c;如上图所示需要适配的很多&#xff0c;从硬件、操作系统、中间件&#xff08…

人工智能在数字病理切片虚拟染色以及染色标准化领域的研究进展|顶刊速递·24-06-23

小罗碎碎念 本期推文主题&#xff1a;人工智能在数字病理切片虚拟染色以及染色标准化领域的研究进展 这一期的推文是我发自内心觉得为数不多&#xff0c;特别宝贵的一篇推文&#xff0c;原因很简单——可参考的文献相对较少&方向非常具有研究意义&现在不卷。 数字病理…

TCP如何做到可靠传输

TCP如何做到可靠传输 1. 连接建立&#xff08;三次握手&#xff09;2. 数据传输2.1 序列号和确认号2.2 窗口机制 3. 流量控制4. 拥塞控制5. 错误检测与恢复5.1 校验和5.2 重传机制 6. 连接终止&#xff08;四次挥手&#xff09;示例 TCP&#xff08;传输控制协议&#xff09;通…

【ajax核心04】利用async、await解决显式promise链问题

一&#xff1a;async函数与await关键字 async function 声明创建一个绑定到给定名称的新异步函数。函数体内允许使用 await 关键字&#xff0c;这使得我们可以更简洁地编写基于 promise 的异步代码&#xff0c;并且避免了显式地配置 promise 链的需要。 function resolveAfte…

Vue3+TypeScript项目实战——打造雨雪交加的智慧城市

个人简介 &#x1f440;个人主页&#xff1a; 前端杂货铺 ⚡开源项目&#xff1a; rich-vue3 &#xff08;基于 Vue3 TS Pinia Element Plus Spring全家桶 MySQL&#xff09; &#x1f64b;‍♂️学习方向&#xff1a; 主攻前端方向&#xff0c;正逐渐往全干发展 &#x1…

三国之家网站的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;管理员管理&#xff0c;论坛管理&#xff0c;公告管理&#xff0c;三国视频管理&#xff0c;基础数据管理&#xff0c;三国图文管理 前台账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#…

VS2010中负载测试注意问题

目前在项目开发中&#xff0c;通常会使用DBHelper类&#xff0c;对数据库操作进行封装&#xff0c;如果使用的静态数据库连接对象&#xff0c;在负载测试中将出现连接已打开或未关闭的问题&#xff0c;因为静态连接变量只赋值一次后就常驻内存。这样就导致了只有一个连接&#…

从工具产品体验对比spark、hadoop、flink

作为一名大数据开发&#xff0c;从工具产品的角度&#xff0c;对比一下大数据工具最常使用的框架spark、hadoop和flink。工具无关好坏&#xff0c;但人的喜欢有偏好。 目录 评价标准1 效率2 用户体验分析从用户的维度来看从市场的维度来看从产品的维度来看 3 用户体验的基本原则…