Spring Data Elasticsearch

Elasticsearch提供的Java客户端有一些不太方便的地方:

  • 很多地方需要拼接Json字符串,在java中拼接字符串有多恐怖你应该懂的

  • 需要自己把对象序列化为json存储

  • 查询到结果也需要自己反序列化为对象

因此,我们这里就不讲解原生的Elasticsearch客户端API了。

而是学习Spring提供的套件:Spring Data Elasticsearch。

简介

Spring Data Elasticsearch是Spring Data项目下的一个子模块。

查看 Spring Data的官网:http://projects.spring.io/spring-data/

Spring Data的使命是为数据访问提供熟悉且一致的基于Spring的编程模型,同时仍保留底层数据存储的特殊特性。

它使得使用数据访问技术,关系数据库和非关系数据库,map-reduce框架和基于云的数据服务变得容易。这是一个总括项目,其中包含许多特定于给定数据库的子项目。这些令人兴奋的技术项目背后,是由许多公司和开发人员合作开发的。

Spring Data 的使命是给各种数据访问提供统一的编程接口,不管是关系型数据库(如MySQL),还是非关系数据库(如Redis),或者类似Elasticsearch这样的索引数据库。从而简化开发人员的代码,提高开发效率。

包含很多不同数据操作的模块:

Spring Data Elasticsearch的页面:https://projects.spring.io/spring-data-elasticsearch/

特征:

  • 支持Spring的基于@Configuration的java配置方式,或者XML配置方式

  • 提供了用于操作ES的便捷工具类ElasticsearchTemplate。包括实现文档到POJO之间的自动智能映射。

  • 利用Spring的数据转换服务实现的功能丰富的对象映射

  • 基于注解的元数据映射方式,而且可扩展以支持更多不同的数据格式

  • 根据持久层接口自动生成对应实现方法,无需人工编写基本操作代码(类似mybatis,根据接口自动得到实现)。当然,也支持人工定制查询

创建Demo工程

我们使用spring脚手架新建一个demo,学习Elasticsearch

pom依赖:

<?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
http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.learn.demo</groupId><artifactId>elasticsearch</artifactId><version>0.0.1-SNAPSHOT</version><packaging>jar</packaging><name>elasticsearch</name><description>Demo project for Spring Boot</description><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.0.6.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><java.version>1.8</java.version></properties><dependencies><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>

application.yml文件配置:

spring:data:elasticsearch:cluster-name: elasticsearchcluster-nodes: 192.168.56.101:9300

实体类及注解

首先我们准备好实体类:

public class Item {Long id;String title; //标题String category;// 分类String brand; // 品牌Double price; // 价格String images; // 图片地址
}

映射

Spring Data通过注解来声明字段的映射属性,有下面的三个注解:

  • @Document 作用在类,标记实体类为文档对象,一般有四个属性

    • indexName:对应索引库名称

    • type:对应在索引库中的类型

    • shards:分片数量,默认5

    • replicas:副本数量,默认1

  • @Id 作用在成员变量,标记一个字段作为id主键

  • @Field 作用在成员变量,标记为文档的字段,并指定字段映射属性:

    • type:字段类型,取值是枚举:FieldType

    • index:是否索引,布尔类型,默认是true

    • store:是否存储,布尔类型,默认是false

    • analyzer:分词器名称:ik_max_word

示例:

@Document(indexName = "item",type = "docs", shards = 1, replicas = 0)
public class Item {@Idprivate Long id;@Field(type = FieldType.Text, analyzer = "ik_max_word")private String title; //标题@Field(type = FieldType.Keyword)private String category;// 分类@Field(type = FieldType.Keyword)private String brand; // 品牌@Field(type = FieldType.Double)private Double price; // 价格@Field(index = false, type = FieldType.Keyword)private String images; // 图片地址
}

搭建elasticsearch测试工程相关推荐

  1. 搭建一个springboot工程测试md5加密

    1.展示搭建本次测试所用的springboot工程结构 其中,TestController模拟的是服务端接收post请求,TestMD5模拟的是客户端使用单元测试发送http请求 2.展示pom.xm ...

  2. 【Filecoin源码仓库全解析】第一章:搭建Filecoin测试节点

    2019.2.14 情人节,Filecoin项目开放了核心源码仓库go-filecoin,并更新了 filecoin-project organization下的诸多核心成果,这意味着,Filecoi ...

  3. 如何基于Docker快速搭建Elasticsearch集群?

    如何基于Docker快速搭建Elasticsearch集群? Elasticsearch  作为一个搜索引擎,我们对它的基本要求就是存储海量数据并且可以在非常短的时间内查询到我们想要的信息.所以第一步 ...

  4. Dubbo(七)使用SpringBoot搭建dubbo消费者工程

    本章将创建一个dubbo 消费者工程并实现远程调用消费者示例.环境:springboot + dubbo + zookeeper, 工程目录如下: 主要步骤: 创建maven工程添加pom依赖 创建S ...

  5. CentOS7环境下搭建ElasticSearch

    搭建环境在11.12.112.209主机,本文件主要说明搭建一个ES,如果多个es,只有让他们的配置文件中的集群名称cluster.name配置成一样,它们就会自动组成一个集群. 一.搭建elasti ...

  6. 搭建测试环境_当面试时被问到“搭建过测试环境吗”, 身为小白要怎么回答?...

    导语:很多人在面试软件测试的过程中,经常被问到"你会搭建测试环境吗"面对这样的提问,你知道怎么回答么?>>>> 怎 么 回 答 面试的时突然被问到,很多人的 ...

  7. 基于 Win10 平台 搭建 Elasticsearch 集群

    基于 Win10 平台搭建 Elasticsearch 集群 1. 基本概念 1.1 单机和集群 1.2 节点 2. 部署集群 3. 启动集群 4. 测试集群 1. 基本概念 1.1 单机和集群 ✨单 ...

  8. 紫光信息港 软件测试,紫光同创PGL22G开发平台试用连载(3)---以太网测试工程二...

    原标题:紫光同创PGL22G开发平台试用连载(3)---以太网测试工程二 续前一篇博文,经过多次对PANGO工具的参数进行修改的尝试,在资源占用率为(LUT-70.02%,Register-36.34 ...

  9. 基于Docker搭建Elasticsearch集群

    一.环境搭建 SpringBoot整合es时使用的集群环境,如果不搭建集群使用SpringBoot整合时会报错:None of the configured nodes are available 我 ...

最新文章

  1. Java IO - 字符流
  2. 12分钟训练COCO模型!速度精度双提高
  3. 坦克大战python_Python语言学了没用?那只能说你是真的没有精通了Python语言
  4. hbase 特性与api
  5. 阿里OSS对象存储,实现图片上传进度显示ProgressListener;
  6. 微信小程序使用组件实现移动端软键盘
  7. JSP+JavaBean实现简单计算器
  8. 芯片的原理应用与分类
  9. Intel服务器芯片组区别,不同芯片组的主板有什么区别?
  10. flink sql 报错:FlinkRuntimeException: Exceeded checkpoint tolerable failure threshold
  11. mybatis 父子级树形结构查询
  12. 额头、太阳穴、两鬓长痘痘怎么回事?
  13. 计算机学科教育案例怎么写,关于举办2019年学院《计算机应用基础》课程教学改革实验案例征文比赛的通知...
  14. linux modprobe命令参数
  15. 因 N-API 发音对黑人的头发不友好,Node.js 官方将其改名为 Node-API
  16. torch-scatter, torch-cluster, torch-sparse, torch版本对应,cuda
  17. Tensorflow神经网络预测股票均价
  18. 通达oa php冲突,通达OA某版本系统存在通用SQL注入(附注射技巧)
  19. CUIT Online Judge 子段和
  20. 感觉 C++ 很简单,但为何这么多劝退的?

热门文章

  1. matlab 实现 stacked Autoencoder 解决图像分类问题
  2. 批量修改dos文件到unix
  3. WPF学习之路(六)Command
  4. [ios开发基础之]代码块
  5. .NET体系中的源程序安全问题
  6. java类初始化顺序
  7. 【研究任务】linux系统开机启动过程
  8. python综合练习1-- 用户登录
  9. 架构设计:生产者/消费者模式 第3页:队列缓冲区
  10. Spring MVC学习路(三) 编写第一个demo