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

石景山网站建设有哪些公司夏津网站开发

石景山网站建设有哪些公司,夏津网站开发,网站建设优化一体,商品展示的网站第十一章 分布式搜索引擎 elasticsearch 四、RestAPI ES 官方提供了各种不同语言的客户端#xff0c;用来操作 ES。这些客户端的本质就是组装 DSL 语句#xff0c;通过 http 请求发送给 ES。官方文档地址#xff1a;https://www.elastic.co/guide/en/elasticsearch/client/…第十一章 分布式搜索引擎 elasticsearch 四、RestAPI ES 官方提供了各种不同语言的客户端用来操作 ES。这些客户端的本质就是组装 DSL 语句通过 http 请求发送给 ES。官方文档地址https://www.elastic.co/guide/en/elasticsearch/client/index.html 其中的 Java Rest Client 又包括两种 Java Low Level Rest ClientJava High Level Rest Client 此处使用的是 Java HighLevel Rest Client 客户端 API 1. 导入 Demo 工程 1.1 导入数据 导入资料提供的数据库数据 见专栏 - 全栈资料包 - 资源包/02_cloud 数据结构如下 CREATE TABLE tb_hotel (id bigint(20) NOT NULL COMMENT 酒店id,name varchar(255) NOT NULL COMMENT 酒店名称例7天酒店,address varchar(255) NOT NULL COMMENT 酒店地址例航头路,price int(10) NOT NULL COMMENT 酒店价格例329,score int(2) NOT NULL COMMENT 酒店评分例45就是4.5分,brand varchar(32) NOT NULL COMMENT 酒店品牌例如家,city varchar(32) NOT NULL COMMENT 所在城市例上海,star_name varchar(16) DEFAULT NULL COMMENT 酒店星级从低到高分别是1星到5星1钻到5钻,business varchar(255) DEFAULT NULL COMMENT 商圈例虹桥,latitude varchar(32) NOT NULL COMMENT 纬度例31.2497,longitude varchar(32) NOT NULL COMMENT 经度例120.3925,pic varchar(255) DEFAULT NULL COMMENT 酒店图片例:/img/1.jpg,PRIMARY KEY (id) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4;1.2 导入项目 导入资料提供的项目: 见专栏 - 全栈资料包 - 资源包/02_cloud 1.3 mapping 映射分析 创建索引库最关键的是 mapping 映射而 mapping 映射要考虑的信息包括 字段名字段数据类型是否参与搜索是否需要分词如果分词分词器是什么 其中 字段名、字段数据类型可以参考数据表结构的名称和类型是否参与搜索要分析业务来判断例如图片地址就无需参与搜索是否分词呢要看内容内容如果是一个整体就无需分词反之则要分词分词器我们可以统一使用 ik_max_word 看下酒店数据的索引库结构: PUT /hotel {mappings: {properties: {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,copy_to: all},starName:{type: keyword},business:{type: keyword},location:{type: geo_point},pic:{type: keyword,index: false},all:{type: text,analyzer: ik_max_word}}} }几个特殊字段说明 location地理坐标里面包含精度、纬度all一个组合字段其目的是将多字段的值利用 copy_to 合并提供给用户搜索 地理坐标说明 copy_to 说明 1.4 初始化 RestClient 在 elasticsearch 提供的 API 中与 elasticsearch 一切交互都封装在一个名为 RestHighLevelClient 的类中必须先完成这个对象的初始化建立与 elasticsearch 的连接。 分为三步 1引入 es 的 RestHighLevelClient 依赖 dependencygroupIdorg.elasticsearch.client/groupIdartifactIdelasticsearch-rest-high-level-client/artifactId /dependency2因为 SpringBoot 默认的 ES 版本是 7.6.2所以我们需要覆盖默认的 ES 版本 propertiesjava.version1.8/java.versionelasticsearch.version7.12.1/elasticsearch.version /properties3初始化 RestHighLevelClient 初始化的代码如下 RestHighLevelClient client new RestHighLevelClient(RestClient.builder(HttpHost.create(http://192.168.150.101:9200) ));这里为了单元测试方便我们创建一个测试类 HotelIndexTest然后将初始化的代码编写在BeforeEach 方法中 package com.alex.hotel;import org.apache.http.HttpHost; import org.elasticsearch.client.RestHighLevelClient; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test;import java.io.IOException;public class HotelIndexTest {private RestHighLevelClient client;BeforeEachvoid setUp() {this.client new RestHighLevelClient(RestClient.builder(HttpHost.create(http://192.168.150.101:9200)));}AfterEachvoid tearDown() throws IOException {this.client.close();} }2. 创建索引库 2.1 代码解读 创建索引库的 API 如下 代码分为三步 创建 Request 对象。因为是创建索引库的操作因此 Request 是 CreateIndexRequest。添加请求参数其实就是 DSL 的 JSON 参数部分。因为 json 字符串很长这里是定义了静态字符串常量 MAPPING_TEMPLATE让代码看起来更加优雅。发送请求client.indices()方法的返回值是 IndicesClient 类型封装了所有与索引库操作有关的方法。 2.2 完整示例 在 hotel-demo 的 com.alex.hotel.constants 包下创建一个类定义 mapping 映射的 JSON 字符串常量 package com.alex.hotel.constants;public class HotelConstants {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 \copy_to\: \all\\n },\n \starName\:{\n \type\: \keyword\\n },\n \business\:{\n \type\: \keyword\\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 }; }在 hotel-demo 中的 HotelIndexTest 测试类中编写单元测试实现创建索引 Test void createHotelIndex() throws IOException {// 1.创建Request对象CreateIndexRequest request new CreateIndexRequest(hotel);// 2.准备请求的参数DSL语句request.source(MAPPING_TEMPLATE, XContentType.JSON);// 3.发送请求client.indices().create(request, RequestOptions.DEFAULT); }3. 删除索引库 删除索引库的 DSL 语句非常简单 DELETE /hotel与创建索引库相比 请求方式从 PUT 变为 DELTE请求路径不变无请求参数 所以代码的差异注意体现在 Request 对象上。依然是三步走 创建 Request 对象。这次是 DeleteIndexRequest 对象准备参数。这里是无参发送请求。改用 delete 方法 在 hotel-demo 中的 HotelIndexTest 测试类中编写单元测试实现删除索引 Test void testDeleteHotelIndex() throws IOException {// 1.创建Request对象DeleteIndexRequest request new DeleteIndexRequest(hotel);// 2.发送请求client.indices().delete(request, RequestOptions.DEFAULT); }4. 判断索引库是否存在 判断索引库是否存在本质就是查询对应的 DSL 是 GET /hotel因此与删除的 Java 代码流程是类似的。依然是三步走 创建 Request 对象。这次是 GetIndexRequest 对象准备参数。这里是无参发送请求。改用 exists 方法 Test void testExistsHotelIndex() throws IOException {// 1.创建Request对象GetIndexRequest request new GetIndexRequest(hotel);// 2.发送请求boolean exists client.indices().exists(request, RequestOptions.DEFAULT);// 3.输出System.err.println(exists ? 索引库已经存在 : 索引库不存在); }5. 总结 JavaRestClient 操作 elasticsearch 的流程基本类似。核心是 client.indices()方法来获取索引库的操作对象。 索引库操作的基本步骤 初始化 RestHighLevelClient创建 XxxIndexRequest。XXX 是 Create、Get、Delete准备 DSL Create 时需要其它是无参发送请求。调用 RestHighLevelClient#indices().xxx()方法xxx 是 create、exists、delete
http://www.dnsts.com.cn/news/115567.html

相关文章:

  • 查网站是什么公司做的甘肃兰州事件
  • 网站建设开发合同网站登录后不显示内容
  • 怎么建立购物网站全网有哪些网站可以做淘客
  • 网站的建设与管理网站的建设进度表
  • 浦东新区网站优化推广盐城哪家专业做网站
  • 德阳网站建设ghxhwl做网站模板用什么框架
  • 手机直接看的网站有哪些在线一键生成网页
  • 南昌网站建设公司电子商城网站开发支持手机端
  • js 取网站域名企业网站优化应该怎么做
  • 商城网站建设公司爱问宁波好品质品牌网站设计哪家好
  • 懂得网站推广做酒类直供网站行吗
  • 学校网站首页设计图片营销网站参考
  • 装修网站建设服务商跨境电商开发流程
  • 网站开发主管岗位职责十张优秀海报设计欣赏
  • 学风建设网站网站备案服务商
  • 色系网站.wordpress重置密码邮件
  • 网站内容告知书怎么做培训班网站
  • 旅游电子商务网站建设技术规范wordpress 图文插件
  • 凡科建站有哪些弊端天元建设集团有限公司官网首页
  • 做相册的网站 网易企业电子商务网站优化方案
  • 百度seo排名原理广州seo网络培训课程
  • 温州免费建站模板温州市网站优化
  • 郑州企业网站排行wordpress如何新建页面模板
  • 湖南网站seo推广dedecms学校网站模板
  • 百度免费网站制作深圳做营销网站制作
  • 网片围栏最新黑帽seo培训
  • 书店网站建设有域名如何做网站
  • 做青蛙网站城乡住建局官网
  • wordpress获取站点标题网站开发和运行 法律
  • wix做网站步骤番禺区营销型网站建设