SpringData-ElasticSearch入门

news2024/9/20 16:45:38

文章目录

  • 1、创建demo工程
  • 2、application.properties
  • 3、Goods 实体类
  • 4、EsDemoApplicationTests 测试类
  • 5、pom.xml
  • 6、查看索引库
  • 7、查看单个索引(数据库)
  • 8、从goods索引中检索出符合特定搜索条件的文档(或记录)

1、创建demo工程

在这里插入图片描述
在这里插入图片描述

2、application.properties

spring.application.name=es-demo
spring.elasticsearch.uris=http://192.168.74.148:9200
spring.elasticsearch.username=elastic
spring.elasticsearch.password=123456

3、Goods 实体类

package com.atguigu.es.demo.pojo;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.data.annotation.Id;
import org.springframework.data.elasticsearch.annotations.Document;
import org.springframework.data.elasticsearch.annotations.Field;
import org.springframework.data.elasticsearch.annotations.FieldType;
@Data
@AllArgsConstructor
@NoArgsConstructor
@Document(indexName = "goods")
public class Goods {

    @Id
    private Long id;

    @Field(type = FieldType.Text,analyzer = "ik_max_word")
    private String title;

    @Field(type = FieldType.Keyword,index = false)
    private String image;

    @Field(type = FieldType.Integer)
    private Integer price;

    @Field(type = FieldType.Keyword)
    private String brand;

    @Field(type = FieldType.Keyword)
    private String category;
}

4、EsDemoApplicationTests 测试类

package com.atguigu.es.demo;

import com.atguigu.es.demo.pojo.Goods;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.elasticsearch.client.elc.ElasticsearchTemplate;
import org.springframework.data.elasticsearch.core.IndexOperations;

@SpringBootTest
class EsDemoApplicationTests {

	@Autowired
	private ElasticsearchTemplate elasticsearchTemplate;

	@Test
	void contextLoads() {
	    // 获取Goods类对应的索引操作对象
	    IndexOperations indexOps = this.elasticsearchTemplate.indexOps(Goods.class);
	    // 创建索引
	    indexOps.create();
	    // 创建映射
	    indexOps.putMapping();
	}

}

5、pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>3.0.5</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>

  <!-- Generated by https://start.springboot.io -->
  <!-- 优质的 spring/boot/data/security/cloud 框架中文文档尽在 => https://springdoc.cn -->
	<groupId>com.atguigu</groupId>
	<artifactId>es-demo</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<name>es-demo</name>
	<description>es-demo</description>
	<url/>
	<licenses>
		<license/>
	</licenses>
	<developers>
		<developer/>
	</developers>
	<scm>
		<connection/>
		<developerConnection/>
		<tag/>
		<url/>
	</scm>
	<properties>
		<java.version>17</java.version>
	</properties>
	<dependencies>
		<dependency>
			<groupId>org.projectlombok</groupId>
			<artifactId>lombok</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-data-elasticsearch</artifactId>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
	</dependencies>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>

</project>

6、查看索引库

在这里插入图片描述

7、查看单个索引(数据库)

GET /goods
{
  "goods": {
    "aliases": {},
    "mappings": {
      "properties": {
        "_class": {
          "type": "keyword",
          "index": false,
          "doc_values": false
        },
        "brand": {
          "type": "keyword"
        },
        "category": {
          "type": "keyword"
        },
        "image": {
          "type": "keyword",
          "index": false
        },
        "price": {
          "type": "integer"
        },
        "title": {
          "type": "text",
          "analyzer": "ik_max_word"
        }
      }
    },
    "settings": {
      "index": {
        "routing": {
          "allocation": {
            "include": {
              "_tier_preference": "data_content"
            }
          }
        },
        "refresh_interval": "1s",
        "number_of_shards": "1",
        "provided_name": "goods",
        "creation_date": "1724723254472",
        "number_of_replicas": "1",
        "uuid": "vBsgfYlfRjKs6uSISXbxtw",
        "version": {
          "created": "8080299"
        }
      }
    }
  }
}

8、从goods索引中检索出符合特定搜索条件的文档(或记录)

GET /goods/_search
{
  "took": 2,
  "timed_out": false,
  "_shards": {
    "total": 1,
    "successful": 1,
    "skipped": 0,
    "failed": 0
  },
  "hits": {
    "total": {
      "value": 0,
      "relation": "eq"
    },
    "max_score": null,
    "hits": []
  }
}

在这里插入图片描述

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

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

相关文章

Elasticsearch:使用 LTR 进行个性化搜索

作者&#xff1a;来自 Elastic Max Jakob 如今&#xff0c;用户已经开始期待根据个人兴趣定制搜索结果。如果我们听的所有歌曲都是摇滚歌曲&#xff0c;那么在搜索 “Crazy” 时&#xff0c;我们会期望 Aerosmith 的歌曲排在搜索结果的首位&#xff0c;而不是 Gnarls Barkley 的…

使用安信可Ai-WB2-12F开启wifi与手机通信TCP-IP(AT指令)

当时在做两个单片机之间无线通信&#xff0c;或者单片机与手机无线通信&#xff0c;就像找一个蓝牙和wifi双模的无线模块&#xff0c;一开始看ESP8684&#xff08;ESP32-C2&#xff09;这个芯片模组是有wifi和蓝牙的&#xff0c;买回来后才发现他不可以在程序运行中更换蓝牙或者…

《黑神话·悟空》这款游戏到底是用什么编程语言开发的?

你也有被这段游戏试玩视频刷屏吗&#xff1f; 13分钟、国产团队出品、B站上线不到24小时&#xff0c;播放量已经破千万&#xff0c;迅速火爆全网。 这就是来自国内游戏团队游戏科学&#xff08;Game Science&#xff09;开发的3A大作《黑神话&#xff1a;悟空》。 《黑神话悟…

vscode开发小程序

1 安装 "微信小程序开发工具" 2 安装 "WXML - Language Service" 3 安装 "wxmp-api-plugin" 或 "wechat-snippet" 4 安装"WXSS"

顶级的python入门教程!小白到大师,从这篇教程开始!

1. 为什么要学习Python&#xff1f; 学习Python的原因有很多&#xff0c;以下是几个主要的原因&#xff1a; 广泛应用&#xff1a;Python被广泛应用于Web开发、数据科学、人工智能、机器学习、自动化运维、网络爬虫、科学计算、游戏开发等多个领域。掌握Python意味着你可以在这…

嵌入式全栈开发学习笔记---Linux系统编程(进程间通信)

目录 进程间通信概述 进程通信目的 进程间通信的发展 进程间通信分类 管道通信 无名管道 有名管道mkfifo() 信号 发送信号kill & raise 忽略信号signal() 发送信号alarm() 消息队列 消息队列使用的步骤 创建消息队列msgget() 读写消息队列msgrcv()/msgsnd()…

ip地址一天变化好几次

‌IP地址每天变化的原因主要取决于其分配方式&#xff1a;静态或动态。静态IP地址是长期固定分配给一台设备的&#xff0c;除非进行手动更改或网络配置发生变化&#xff0c;否则该设备的IP地址将保持不变。而动态IP地址则是根据网络环境和需求动态分配给设备的&#xff0c;可能…

一些评估模型的总结(1)

最近学习了评估模型&#xff08;如下所示&#xff09;&#xff0c;对这四种方法进行小总结。 目录 1. 层次分析法。&#xff08;主观赋权方法&#xff0c;主观确定成对比较矩阵&#xff09; 2. 熵权法&#xff08;基于数据的客观赋权的方法&#xff09; 3. topsis方法&…

【图论入门】图的存储

1.邻接矩阵 邻接矩阵是图论中用于表示图&#xff08;Graph&#xff09;结构的一种重要数据结构&#xff0c;特别适用于表示顶点之间连接关系的图形。在计算机科学和数学领域&#xff0c;它被广泛应用来编码无向图和有向图的信息。 特点&#xff1a; 1、无向图的邻接矩阵是对称…

Java:时区的用法

文章目录 ZoneId常见用法 ZonedDateTime常见方法 代码 黑马学习笔记 ZoneId 常见用法 ZonedDateTime 常见方法 代码 package NewTime;import java.time.Clock; import java.time.ZoneId; import java.time.ZonedDateTime;/*** Author: ggdpzhk* CreateTime: 2024-08-31*/ pu…

09:Logic软件原理图信号连通

原理图信号连通 快捷键&#xff1a;F2 2.添加网络名称

【React】为什么Hooks不能出现在判断中

前言 在 React 中&#xff0c;Hooks 不能写在条件语句中&#xff0c;如下面这段代码点击button后则会报错。 import { useEffect, useState } from "react"export default () > {const [count, setCount] useState(0)if (count > 0) {useEffect(() > {co…

4-4 初始化引导程序

基本原理的讲解 在loader所需要做的事情&#xff0c; 1 他这个检测内存的容量&#xff0c;我想知道是怎么做的。 2 然后就是模式的切换。 3 然后就是加载操作系统&#xff0c;并跳转到操作系统执行。 这是 他的总体的逻辑。 首先是加载 512 字节。 所以这512 字节的主要任务…

【Kubernetes部署篇】二进制搭建K8s高可用集群1.26.15版本

文章目录 一、服务器环境信息及部署规划1、K8S服务器信息及网段规划2、服务器部署架构规划3、组件版本信息 二、初始化环境操作1、关闭防火墙2、配置本地域名解析3、配置服务器时间保持一致4、禁用swap交换分区(K8S强制要求禁用)5、配置主机之间无密码登录6、修改Linux内核参数…

springboot 医院挂号系统 ---附源码91789

目录 1 绪论 1.1 研究背景 1.2研究意义 1.3论文结构与章节安排 2 医院挂号系统系统分析 2.1 可行性分析 2.2 系统功能分析 2.3 系统用例分析 2.4 系统流程分析 图2-5业务流程图 2.5本章小结 3 医院挂号系统总体设计 3.1 系统功能模块设计 3.2 数据库设计 3.4本章…

Python读取CSV文件的几种方法!

1、使用 csv 模块 首先&#xff0c;你需要导入csv模块&#xff1a; import csv接下来&#xff0c;你可以使用csv.reader()函数来读取CSV文件。假设你的CSV文件名为data.csv&#xff0c;它的内容如下&#xff1a; Name, Age, Salary John, 25, 5000 Alice, 30, 6000 Bob, 35,…

书生浦语实训营-InternVL 多模态模型部署微调实践

1.什么是InternVL InternVL 是一种用于多模态任务的深度学习模型&#xff0c;旨在处理和理解多种类型的数据输入&#xff0c;如图像和文本。它结合了视觉和语言模型&#xff0c;能够执行复杂的跨模态任务&#xff0c;比如图文匹配、图像描述生成等。 2.InternVL模型介绍 对于…

【自由能系列(初级)】生命负熵——熵增原理与生命秩序的对抗

【通俗理解】生命负熵——熵增原理与生命秩序的对抗 关键词提炼 #生命负熵 #熵增原理 #生命秩序 #薛定谔方程 #熵减过程 #热力学第二定律 #信息熵 #生命系统建模 #负熵流 #熵平衡 第一节&#xff1a;生命负熵的类比与核心概念 1.1 生命负熵的类比 生命负熵可以被视为生命系…

如何打造免费体育馆场地预约系统?php vue技术实现,简易操作指南

✍✍计算机编程指导师 ⭐⭐个人介绍&#xff1a;自己非常喜欢研究技术问题&#xff01;专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目&#xff1a;有源码或者技术上的问题欢迎在评论区一起讨论交流&#xff01; ⚡⚡ Java实战 |…

Unity(2022.3.41LTS) - 脚本

目录 零.简介 一、脚本的基本概念 二、脚本的创建和使用 三、脚本的编程基础 四、与 Unity 引擎的交互 五、重要的类介绍 六、事件函数介绍 七、事件函数的执行顺序 八、脚本的优化和调试 零.简介 在 Unity 中&#xff0c;脚本是实现游戏逻辑和交互的重要组成部分。 …