当前位置: 首页 > 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

相关文章:

  • 【最后203篇系列】029 基于Machinations构造回测系统
  • SQL注入 01
  • 机器学习专栏(4):从数据饥荒到模型失控,破解AI训练的七大生死劫
  • 实现对象之间的序列化和反序列化
  • Kubernetes控制平面组件:调度器Scheduler(一)
  • Java 软件测试开发相关资源
  • DSA数据结构与算法 6
  • 快速从S32K358切换到328
  • 在阿里云和树莓派上编写一个守护进程程序
  • NLP 梳理03 — 停用词删除和规范化
  • Python 深度学习实战 第11章 自然语言处理(NLP)实例
  • 嵌入式芯片中的 SRAM 内容细讲
  • 4.20刷题记录(单调栈)
  • 非参数检验题目集
  • 将 JSON 字符串转化为对象的详细笔记 (Java示例)
  • 使用安全继电器的急停电路设计
  • TCP常见知识点整理
  • 关于TCP三次握手和四次挥手过程中的状态机、使用三次握手和四次挥手的原因、拥塞控制
  • Matlab 五相电机仿真
  • Pandas的应用
  • 央行副行长陆磊:国际化程度有效提升是上海国际金融中心建设的一个主要方向
  • 呈现“民族脊梁型爱国学府”曲折辉煌的办学历程,这个展览开幕
  • 搜索市场战火延伸:OpenAI虎视眈眈,欲收购谷歌浏览器
  • 马上评丨超常设置战略急需专业,意味着什么
  • 举报人不服相关部门奖励“缺斤少两”,两地分别作出再认定
  • 美股反弹,纳斯达克中国金龙指数大涨3.69%