Elasticsearch Java入门

news2024/12/27 11:06:01

Elasticsearch安装

在这里插入图片描述

官网下载
下载的时候注意版本,spring boot如果用的是2.2+版本就下载6.8+的版本就行

下载完成之后解压,运行bin->elasticsearch.bat就可以启动服务了

做出win服务

elasticsearch-service.bat install

在这里插入图片描述

浏览器输入localhost:9200
在这里插入图片描述

Kibana安装

官网下载
下载完成之后解压,运行kibana.bat就可以启动服务了

在这里插入图片描述
浏览器输入http://localhost:5601就可以访问了
在这里插入图片描述
输入GET /_cluster/health可以查看es服务信息

分词器安装

es默认是用的standard分词器,对英文很友好,但是对中文并不友好,我们来看下

GET /_analyze
{
  "analyzer": "standard", 
  "text": "i love you"
}

在这里插入图片描述
英文是可以分词的,我们再来看下中文

GET /_analyze
{
  "analyzer": "standard", 
  "text": "我 爱 中华 人民 共和国"
}

在这里插入图片描述
可以看到中国这个词并没有分出来,所以我们需要安装中文分词器,现在用的最多的就是ik

下载地址
github下载很慢慢的,可以去我分享的百度网盘里面直接安装
在es的plugins文件下新建ik文件,把刚刚下载好的解压缩到当前文件下就可以了

在这里插入图片描述
然后重启es服务就可以了

ik有2中分词器模式

  • ik_smart:按最粗粒度分词
  • ik_max_word:按最细粒度分词

我们先看下ik_smart

GET /_analyze
{
  "analyzer": "ik_smart", 
  "text": "我爱中华人民共和国"
}

在这里插入图片描述
他把中华人民共和国当成一个粗粒度的词,并没有再往下细分,一共只分出了3个词

再来看下ik_max_word

在这里插入图片描述
这里可以看到一共分了10个词,按最细粒度分的

spring boot 集成

注意spring boot 的版本是2.2.6,es的版本是6.8.6

pom

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>

新建配置类

@Configuration
public class ElasticSearchClientConfig extends AbstractElasticsearchConfiguration {
    @Override
    @Bean
    public RestHighLevelClient elasticsearchClient() {
        final ClientConfiguration clientConfiguration = ClientConfiguration.builder()
                .connectedTo("127.0.0.1:9200")
                .build();
        return RestClients.create(clientConfiguration).rest();
    }
}

新建实体类

@Data
@Document(indexName = "products", createIndex = true)
public class Product {

    /**
     * id
     */
    @Id
    private Integer id;
    /**
     * 名称
     */
    @Field(type = FieldType.Keyword)
    private String title;

    /**
     * 价格
     */
    @Field(type = FieldType.Float)
    private Double price;
    
    /**
     * 描述
     */
    @Field(type = FieldType.Text)
    private String description;
}

新建Repository

@Repository
public interface ProductRepository extends ElasticsearchRepository<Product,Integer> {

}

新建测试类

里面有添加,修改,删除,根据id查询,查询所有方法

@SpringBootTest
class DemoApplicationTests {

    @Autowired
    private ProductRepository productRepository;

    @Test
    public void testCreate() throws IOException {
        Product product = new Product();
        product.setId(3);
        product.setTitle("恒大冰泉");
        product.setPrice(33.11);
        product.setDescription("恒大冰泉很好喝的水");
        productRepository.save(product);
    }

    @Test
    public void testDelete(){
        Product product = new Product();
        product.setId(2);
        productRepository.delete(product);
    }

    @Test
    public void testUpdate(){
        Product product = new Product();
        product.setId(3);
        product.setTitle("恒大冰泉");
        product.setPrice(33.33);
        product.setDescription("恒大冰泉是许家印的水");
        productRepository.save(product);
    }

    @Test
    public void testGetById(){
        Optional<Product> product = productRepository.findById(3);
        System.out.println(product.toString());
    }

    @Test
    public void testGetAll(){
        Iterable<Product> products = productRepository.findAll();
        products.forEach(p->{
            System.out.println(p.toString());
        });
    }
}

查看测试结果
在这里插入图片描述

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

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

相关文章

BandZip cmd调用参数

命令行参数 Bandizip&#xff08;Bandizip.exe&#xff09;及其控制台应用程序&#xff08;bz.exe&#xff09;支持以下命令行参数&#xff1a; 注&#xff1a;推荐使用bz.exe&#xff0c;这个是专门给控制台的&#xff0c;更加稳定一些 # Bandizip.exe <archive> # Ban…

Linux中hosthost.confhost.allowhost.deny作用

可实现应急响应断网&#xff1a;阻止本机对恶意IP的访问链接 /etc/host.conf 为解析库声明的配置信息 /etc/hostname 配置主机名&#xff08;永久生效&#xff09; /etc/hosts 配置ip地址映射 /etc/hosts.allow 配置ip地址白名单 /etc/hosts.deny 配置ip地址黑名单 解…

Centos7安装jdk1.8tomcat

文章目录注意一 jdk1.8下载与安装1.1 JDK下载地址1.2 查看Centos7自带jdk版本1.2.1 第一种方式1.2.2 第二种方式1.2.3 第三种方式1.2.4 下载自带JDK1.2.5 安装JDK1.2.6 补充&#xff1a;查看jdk的安装目录1.2.7 配置环境变量二 tomcat下载与安装三 服务器运行项目模拟3.1 第一步…

EvilSelenium:一款功能强大的Chromium浏览器渗透测试工具

关于EvilSelenium EvilSelenium是一款基于 Selenium的渗透测试工具&#xff0c;该工具基于武器化的Selenium实现其功能&#xff0c;可以帮助广大研究人员针对基于Chromium的浏览器进行安全分析和渗透测试。 功能介绍 1、通过autofill获取存储的凭证信息&#xff1b; 2、获取C…

2023年黑马Java入门到精通教程--Java基础语法

java基础语法 变量详解 二进制 只有0、1&#xff0c;按照逢2进1的方式表示数据&#xff1a; 十进制转二进制的算法 除二取余法。 计算机中的数据的最小单位 其他数据形式是如何存储的 字符在计算机中是如何存储的呢&#xff1f; ASCII编码表&#xff1a;即美国信息交换标准…

代码随想录算法训练营第五十八天_第九章_动态规划 | 392.判断子序列、115.不同的子序列

LeetCode 392.判断子序列 给定字符串 s 和 t &#xff0c;判断 s 是否为 t 的子序列。 视频讲解https://www.bilibili.com/video/BV1tv4y1B7ym/?spm_id_from333.788&vd_sourcef98f2942b3c4cafea8907a325fc56a48文章讲解https://programmercarl.com/0392.%E5%88%A4%E6%96%A…

【Java线程】线程退出和终止

1. 线程终止 —— 通知方式 通过在 T1 线程中修改 T2 线程中的控制变量&#xff0c;来实现 T1 线程通知 T2 线程终止。 示例如下&#xff1a; /*** description: 线程的终止和退出测试* author: Liuwanqing* date: 2022-10-14 17:00*/ public class ThreadExit_ {public sta…

边缘检测与角点检测(模式识别与图像处理课程作业)

边缘检测与角点检测&#xff08;模式识别与图像处理课程作业&#xff09;一、边缘检测1.1、读取图像1.2、图像转换成灰度图像1.3、Sobel算子1.4、Canny算子1.5、显示正常中文的标签1.6、边缘检测结果二、角点检测2.1、读取图像2.2、图像转换成灰度图像2.3、Harris算子2.4、设置…

HTTPTunnel测试

介绍 HTTPTunnel是一个隧道软件。通过http的GET和POST请求隐藏隧道内的流量。适用于有网络封锁的环境&#xff0c;比如防火墙仅允许80端口数据包通过&#xff0c;内部终端访问外部其他应用时&#xff0c;或者渗透测试时访问内部目标服务器的其他业务端口时&#xff0c;都可以通…

MySQL多表操作案例练习

目录 准备 需求 代码 准备 -- 创建test1数据库 create database test1; -- 选择使用test1数据库 use test1; -- 创建部门表 create table dept(deptno int primary key,-- 部门编号dname varchar(14) ,-- 部门名称loc varchar(13) -- 部门地址 ) ;insert into dept values(…

【Rust】19. 模式与模式匹配

19.1 所有可能会用到模式的位置 19.1.1 match 分支 19.1.2 if let 条件表达式 可以组合并匹配 if let、else if 和 else if let 表达式&#xff0c;优势在于可以将多个值与模式比较&#xff08;match 表达式一次只能将一个值与模式比较&#xff09;&#xff0c;且各个分支并不…

[NOI Online 2022 入门组] 王国比赛

题目背景&#xff1a; 经过管理员的考虑&#xff0c;我们打算将民间数据单独存放在最后一个 Subtask 中。这些测试点分数均为 0 分&#xff0c;但是没有通过其中的任何测试点将会视为此题不通过。 民间数据提供者&#xff1a;一扶苏一。 题目描述&#xff1a; 智慧之王 Kri …

C++八数码程序图形化界面[2023-02-02]

C八数码程序图形化界面[2023-02-02] 问题简介 八数码&#xff1a;是指在3x3的矩阵中&#xff0c;其中有8个格子放置成1-8&#xff0c;剩下一个格子是空格。能够移动和空格相邻的格子到空格&#xff0c;直到这个矩阵满足每一行依次从左到右读取是有序&#xff0c;得到最后得到1…

爱普生LQ-610K针式打印机不通电维修

基本参数: 爱普生LQ-610K是一台针式打印机,不支持网络打印,A4幅面,不支持自动双面打印。 品牌:爱普生Epson 型号:LQ-610K 颜色:灰色 类型:针式打印机 幅面:A4幅面 针数:24针 打印速度:中文(6.7cpi)150汉字/秒 100汉字/秒 (7.5cpi)168汉字/秒 112汉字/秒5…

【整理分享】一些常见Vue面试题(附答案解析)

本次给大家分享一些关于Vue的常见面试题&#xff0c;带你梳理基础知识&#xff0c;增强Vue知识储备&#xff0c;值得收藏&#xff0c;快来看看吧&#xff01; Vue 常见面试题总结 MVVM模型&#xff1f; MVVM&#xff0c;是Model-View-ViewModel的简写&#xff0c;其本质是MVC…

【Git笔记】GitHub创建远程库,推送到远程库,拉取到本地库与克隆到本地库

目录 创建 GitHub 远程库 创建远程库别名 推送本地库到远程库 拉取远程库到本地库 克隆远程库到本地库 创建 GitHub 远程库 点击 New repository Repository name 名字与工作区名称最好一致 Public 就是开源&#xff0c;Private 就是私有&#xff0c;不公开 其它的保持…

阿里二面:千万级、亿级数据,如何性能优化? 教科书级 答案来了

说在前面 在尼恩指导了几百个小伙伴的面试&#xff0c;在这些过程中&#xff0c; 非常、非常高频的一个面试题&#xff1a; 千万级数据&#xff0c;如何做性能优化&#xff1f; 亿级数据&#xff0c;如何做性能优化&#xff1f; 最近&#xff0c;有个小伙伴阿里二面&#xff0…

袁树雄有《早安隆回》,杨语莲有《汉川》,后者嫁给前者真是绝配

随着《早安隆回》的火爆&#xff0c;创作者袁树雄也收获颇丰&#xff0c;不但各种商演邀约不断&#xff0c;还坐到了春晚的观众席上。 、虽然对于袁树雄来说&#xff0c;他能够坐到观众席上面&#xff0c;就已经是一生的荣幸了&#xff0c;但是央视春晚纂改歌词&#xff0c;总是…

python time模块和datetime模块详解

一、time模块 time模块中时间表现的格式主要有三种&#xff1a; a、timestamp时间戳&#xff0c;时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量 b、struct_time时间元组&#xff0c;共有九个元素组。 c、format time 格式化时间&#xff0c;已格式化的结构使时间更…

【生产者消费者模型】

Linux生产者消费者模型生产者消费者模型生产者消费者模型的概念生产者消费者模型的特点生产者消费者模型优点基于BlockingQueue的生产者消费者模型基于阻塞队列的生产者消费者模型模拟实现基于阻塞队列的生产消费模型生产者消费者模型 生产者消费者模型的概念 生产者消费者模式…