ElasticSearch漫游 (5.RestClient初始化准备)

news2024/11/20 14:42:08

之前都是在客户端页面各种操作, 但是我们作为一个java开发者,需要使用代码的方式 来操作ES, 所以我们要先从 Rest Client 开始

准备数据

既然是ES 查数据 不整点测试数据 没法下饭是吧 先建个酒店表 搞点数据:
在这里插入图片描述
(新手可能会好奇? 我靠 不是玩ES吗?? 怎么扯到mysql里面来了,不着急 我们先把数据放着 到时候再弄进ES)

Rest Client

我们用redis 有jedis java客户端, 用rabbitmq 也有AMQP ,用mysql有jdbc。 那用ES 肯定也会有个java客户端对吧? 它就是 java rest client。


我们做一部分准备工作 包括idea 框架准备 mybatis依赖 数据库建表 导入数据,Rest Client依赖相关的都准备好。 这些很简单就不赘述了


分析数据结构

首先我们在数据库中的 旅店 表 ddl是这样的:

CREATE TABLE `tb_hotel` (
  `id` bigint NOT NULL COMMENT '酒店id',
  `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '酒店名称',
  `address` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '酒店地址',
  `price` int NOT NULL COMMENT '酒店价格',
  `score` int NOT NULL COMMENT '酒店评分',
  `brand` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '酒店品牌',
  `city` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '所在城市',
  `star_name` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '酒店星级,1星到5星,1钻到5钻',
  `business` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '商圈',
  `latitude` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '纬度',
  `longitude` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '经度',
  `pic` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '酒店图片',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=COMPACT;

在数据库里面大家都很熟悉, 但是有没想过我们上一篇讲过的ES的数据是怎么存的?建索引库 然后定义mapping, 包括里面有哪些字段 怎么定义 是否加索引 参与搜索, 是否分词,分词器是什么?

这些就是我们把上面mysql的数据导入到ES中的时候需要考虑的:

我们来实践编写一下mapping:

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"
      },    
      
      "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"        
      }
    }
  }
}


这个地方要按照上一篇 ES 索引库 mapping的理解来写,比如有的字段需要分词 那么就text+分词器。 不需要分词 就用keyword。 不需要搜索的字段就加 “index”:false 。

然后还有定义了一个all。 它是一个分词的text, 它是由前面字段里面 所有带 copy to all的字段组合而成的。 意味着之后 我搜索的时候 可以这几个字段一起搜。


初始化javaRestCliet

引入依赖:

    <properties>
        <java.version>1.8</java.version>
        <elasticsearch.version>7.12.1</elasticsearch.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.elasticsearch.client</groupId>
            <artifactId>elasticsearch-rest-high-level-client</artifactId>
            <version>7.12.1</version>
        </dependency>

写一个简单的单元测试:


public class HotelIndexTest {

    private RestHighLevelClient client;

    @BeforeEach
    void setUp(){
        this.client = new RestHighLevelClient(RestClient.builder(
                HttpHost.create("http://192.168.88.151:9200")
        ));
    }

    @AfterEach
    void tearDown() throws IOException {
        this.client.close();
    }

    @Test
    void testInit(){
        System.out.println(client);
    }
}

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

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

相关文章

两款亲测非常优秀的压缩软件

哈喽&#xff0c;大家好。今天给大家带来两款超级好用的压缩软件&#xff0c;一款是老牌的WinRAR&#xff0c;另一款是开源的7-Zip。 这两款都是小编电脑上必备的压缩软件&#xff0c;至于为什么要装两款嘛&#xff0c;可能因为任性吧&#xff0c;哈哈。 一、测试演示参数 演…

nvm-windows安装和配置

1.下载nvm-windows https://github.com/coreybutler/nvm-windows/releases 进入后如下图 选择nvm-setup.exe下载 2.安装 2.1 运行安装包&#xff0c;同意协议&#xff0c;下一步 2.2 选择nvm的安装目录&#xff0c;安装路径名最好不要有空格 2.3 点击Next&#xff0c;设…

【CPP】NULL nullptr

文章目录 NULLnullptr总结Ref. NULL 在C中&#xff0c;NULL实际上是0.因为C中不能把void*类型的指针隐式转换成其他类型的指针&#xff08;cpp是强类型语言&#xff09;&#xff0c;所以为了解决空指针的表示问题&#xff0c;C引入了0来表示空指针&#xff0c;这样就有了上述代…

Python 爬虫(七):pyspider 使用

1 简介 pyspider 是一个支持任务监控、项目管理、多种数据库&#xff0c;具有 WebUI 的爬虫框架&#xff0c;它采用 Python 语言编写&#xff0c;分布式架构。详细特性如下&#xff1a; 拥有 Web 脚本编辑界面&#xff0c;任务监控器&#xff0c;项目管理器和结构查看器&#…

chatgpt赋能Python-python3_8_6怎么用

Python 3.8.6 全面介绍及使用指南 Python是一种高级编程语言&#xff0c;广泛应用于Web开发、数据科学、人工智能等领域。Python 3.8.6是Python 3.x系列的最新版本&#xff0c;在性能、稳定性、开发效率等方面有了重大的提升。本文将对Python3.8.6进行全面介绍&#xff0c;并给…

【野火启明_瑞萨RA6M5】梦的开始 ---- 点灯(FSP库)

文章目录 一、FSP配置二、hal_entry入口函数三、封装 LED 设备驱动程序下载验证 一、FSP配置 对于 Keil 开发环境&#xff1a; 拷贝一份之前的 Keil 工程模板 “06_Template”&#xff0c; 然后将工程文件夹重命名为 “11_GPIO_LED”&#xff0c;并进入该文件夹里面双击 Keil …

2023关于ES中的数据聚合相关操作

1.ES数据聚合 聚合(aggregation)可以实现对文档数据的统计、分析、运算。聚合常见有三大类。 桶(Bucket)聚合&#xff1a;用来对文档做分组 常用的方法 语句描述TermAggregation按照文档字段值分组Date Histogram按照日期阶梯分组&#xff0c;列如一周或一月为一组 度量(Me…

【走进Linux的世界】Linux---基本指令(1)

个人主页&#xff1a;平行线也会相交 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 平行线也会相交 原创 收录于专栏【Linux专栏】&#x1f388; 本专栏旨在分享学习Linux的一点学习心得&#xff0c;欢迎大家在评论区讨论&#x1f48c; 目录 ls指令pwd指令…

IS420UCSBH4A 用于高速应用中的Mark VIe系列

控制器IS420UCSBH4A由通用电气公司设计&#xff0c;用于高速应用中的Mark VIe系列&#xff0c;采用1066 MHz EP80579英特尔处理器。该控制器可与Mark VIe系列一起用于EX2100e和LS2100e应用。 IS420UCSBH4A技术规格 系列马克维处理机类型1066兆赫EP80579英特尔型号IS420UCSBH4A…

chatgpt赋能Python-python3_8_5怎么打开

Python3.8.5 是如何打开的&#xff1f; Python3.8.5 是近期发布的 Python 编程语言的一个版本&#xff0c;它具有很多新的功能和性能的改进。对于想要学习或者使用 Python3.8.5 的人&#xff0c;本文将介绍如何打开 Python3.8.5 环境。 步骤1&#xff1a;下载 Python3.8.5 首…

chatgpt赋能Python-python3_8怎么用

Python 3.8是什么&#xff1f; Python 3.8是一种编程语言版本&#xff0c;是在2019年10月发布的&#xff0c;它提供了许多新的功能和改进&#xff0c;其中包括优化的性能、新的语法糖&#xff0c;以及一些新的标准库模块&#xff0c;使Python 3.8成为了Python 3.x系列中最受欢…

你可能不需要担心,AI对你的工作造成威胁:万字长文解读科技革命与人类发展

大家好&#xff0c;我是可夫小子&#xff0c;关注AIGC、读书和自媒体。解锁更多ChatGPT、AI绘画玩法。加&#xff1a;keeepdance&#xff0c;备注&#xff1a;chatgpt&#xff0c;拉你进群。 上周&#xff0c;AI似乎成为全互联网的焦点了。谷歌在2023IO开发者大会上&#xff0c…

chatgpt赋能Python-python3_8怎么换行

Python是一种高级编程语言&#xff0c;其易用性和简洁语法深受程序员的喜爱。而在Python中&#xff0c;换行是一项必不可少的操作。今天&#xff0c;我们将介绍如何在Python3.8中进行换行&#xff0c;并提供一些有用的技巧。 Python3.8中的换行操作 在Python中&#xff0c;我…

一星期学sql day1

文章目录 了解部分&#xff08;详细部分google一下&#xff09;mysql的下载和安装mysql的启动MySQL的客户端的链接MySQL数据模型sql的通用语法sql 分类DDL&#xff1a;数据定义语言表操作数值类型字符串类型日期时间类型 DML&#xff08;数据操作语言&#xff09;添加数据 了解…

微信小程序 Vue+uniapp电脑手机笔记本预约维修系统 java python

系统具有专门的供用户使用的前台和专门供管理人员使用的后台。 前台用户使用小程序&#xff0c;后台信息处理使用基 MySql进行管理﹔通过后台添加手机信息、管理用户信息、管理预约信息﹔前台用户通过小程序登录&#xff0c;查看维修信息、发起预约。 管理员后端&#xff1b;首…

mysql入门(二)——函数与约束

mysql入门——函数与约束 mysql中的函数字符串函数字符串函数的基本应用 数值函数日期函数流程函数 约束概述约束的演示外键约束建立外键关联&#xff1a;删除外键外键的删除/更新行为为什么要采取外键约束 mysql中的函数 之前我们介绍过聚合函数&#xff0c;在MySQL中&#x…

chatgpt赋能Python-python3_7字体大小调整

Python3.7字体大小调整指南 您是否在使用Python3.7时遇到字体大小问题&#xff1f;本文将为您提供一份全面的Python3.7字体大小调整指南&#xff0c;帮助您轻松解决这一问题。 什么是字体大小问题 字体大小问题指的是当我们在使用Python3.7编辑器时&#xff0c;发现字体太小…

chatgpt赋能Python-python3_8字体大小

Python3.8 字体大小对程序员的重要性 在编写 Python 代码时&#xff0c;设置字体大小可能是最基本的操作之一&#xff0c;特别是对于长期进行编码工作的程序员来说。Python 3.8 为程序员提供了更好的字体调节能力&#xff0c;可以将字体大小设置为适合自己的大小&#xff0c;使…

chatgpt赋能Python-python3_9_4怎么用

介绍 Python是目前最为流行的编程语言之一&#xff0c;用途非常广泛&#xff0c;可以应用于各个领域。Python 3.9.4是Python最新版本&#xff0c;其中包含了很多新功能和改进&#xff0c;让Python编程更加简单和高效。 此文将解释Python 3.9.4的一些主要的功能&#xff0c;以…

JAVA-SE-异常

在JAVA中&#xff0c;将程序执行过程中发生的不正常行为称为异常。简单来说就是我们在运行或编译一段代码时所报的错误。 一&#xff0c;异常的体系结构 在JAVA中不同类型的异常&#xff0c;都有与其对应的类来进行描述。 …