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

【Elasticsearch入门到落地】11、RestClient初始化索引库

接上篇《10、初始化RestClient》

上一篇我们已经完成了RestHighLevelClient的初始化工作,本篇将正式进入索引库的创建阶段。我们将使用Java代码来创建酒店数据的索引库。

一、准备工作

1. 创建常量类
首先,我们需要定义一个常量类来存放索引库的mapping映射模板。在src/main/java/cn/itcast/hotel/constants包下创建HotelIndexConstants类:

package cn.itcast.hotel.constants;public class HotelIndexConstants {public static final String MAPPING_TEMPLATE = "{\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" +"      \"pic\": {\n" +"        \"type\": \"keyword\",\n" +"        \"index\": false\n" +"      },\n" +"      \"location\": {\n" +"        \"type\": \"geo_point\"\n" +"      },\n" +"      \"all\": {\n" +"        \"type\": \"text\",\n" +"        \"analyzer\": \"ik_max_word\"\n" +"      }\n" +"    }\n" +"  }\n" +"}";
}

这个映射模板定义了酒店索引库中各个字段的类型和属性,与我们在《9、hotel数据结构分析》中分析的结果一致。

二、创建索引库代码实现

在HotelIndexTest测试类中添加创建索引库的测试方法:

@Test
void testCreateIndex() throws IOException {// 1.准备Request      PUT /hotelCreateIndexRequest request = new CreateIndexRequest("hotel");// 2.准备请求参数request.source(HotelIndexConstants.MAPPING_TEMPLATE, XContentType.JSON);// 3.发送请求client.indices().create(request, RequestOptions.DEFAULT);
}

代码解析:
​1.创建请求对象:
●CreateIndexRequest是Elasticsearch提供的创建索引请求类
●构造方法参数为索引库名称"hotel"
​2.设置映射参数:
●使用request.source()方法设置索引库的mapping映射
●参数1是我们定义的映射模板常量MAPPING_TEMPLATE
●参数2指定了内容类型为JSON
​3.发送请求:
●通过client.indices().create()方法发送创建索引请求
●第一个参数是请求对象
●第二个参数RequestOptions.DEFAULT表示使用默认请求选项

三、执行测试

1.确保Elasticsearch服务已启动(9200端口):


2.在IDEA中右键testCreateIndex()方法,选择"Run":


3.测试通过后,可以通过Kibana或Postman验证索引是否创建成功:

GET /hotel

如果返回结果中包含我们定义的mapping结构,说明索引库创建成功:

四、关键点说明

​1.mapping设计:
●text类型字段使用ik_max_word分词器,支持中文分词
●keyword类型字段不进行分词,适合精确匹配
●geo_point类型用于存储地理位置坐标
●copy_to将多个字段值合并到all字段,实现全局搜索
​2.异常处理:

●方法声明了throws IOException,因为网络请求可能抛出IO异常
●如果索引已存在,会抛出ResourceAlreadyExistsException
​3.扩展性:
●映射模板单独定义为常量,便于维护和复用
●可以轻松修改模板内容后重新创建索引

五、总结

本篇我们完成了使用RestHighLevelClient创建索引库的代码实现,关键步骤包括:
1.定义mapping映射模板
2.创建CreateIndexRequest请求对象
3.设置mapping参数
4.发送创建请求

下一篇我们将讲解如何使用RestClient判断并删除索引库,以及如何向索引库中添加文档数据。

转载请注明出处:https://blog.csdn.net/acmman/article/details/147373328

http://www.xdnf.cn/news/41869.html

相关文章:

  • 深入理解Java包装类:自动装箱拆箱与缓存池机制
  • Ubuntu 22.04 更换 Nvidia 显卡后启动无法进入桌面问题的解决
  • [密码学实战]密码服务平台部署架构详解与学习路线
  • C语言 —— 铭纹织构未诞之镜 - 预处理详解
  • 03【变量观】`let`, `mut` 与 Shadowing:理解 Rust 的变量绑定哲学
  • 人机共跑,马拉松人型机器人同跑
  • [FPGA]设计一个DDS信号发生器
  • 2025第十六届蓝桥杯python B组满分题解(详细)
  • 如何在 Ubuntu 上安装 Apache CouchDB ?
  • 【C++ 程序设计】实战:C++ 实践练习题(31~40)
  • Vue3 + TypeScript,使用祖先传后代模式重构父传子模式
  • Redis日常学习(一)
  • 基于Django的AI客服租车分析系统
  • QT6 源(37):界面组件的总基类 QWidget 的源码阅读(下,c++ 代码部分)
  • TDengine 整体构架
  • AI Agent破局:智能化与生态系统标准化的颠覆性融合!
  • 分布自定义shell脚本(详写)附带全代码
  • BT1120 BT656驱动相关代码示例
  • DNS主从同步
  • FFUF指南
  • 高速系统设计简介
  • dac直通线还是aoc直通线? sfp使用
  • -SSRF 服务端请求Gopher 伪协议无回显利用黑白盒挖掘业务功能点
  • UE Datasmith资源导入导出
  • BT-Basic函数之首字母XY
  • 4. 话题通信 ---- 发布方和订阅方cpp文件编写
  • Java实现将MarkDown保留文档内容及格式输出到浏览器页面
  • 2.2/Q2,GBD数据库最新文章解读
  • 模拟算法(一)作业分析及答案
  • java lambda