n. Elasticsearch JAVA API操作
引言
Elasticsearch所支持的客户端连接方式有两种
- Transport 连接
底层使用socket连接,用官方提供的TransPort客户端,网络IO框架使用的是netty - Http连接(Rest Client)
采用Http请求的方式,访问Elasticsearch.
注意:ES的发展规划中在7.0版本开始将废弃 TransportClient,8.0版本中将完全移除 TransportClient,取而代之的是High Level REST Client。
Rest Client
在Elasticsearch官方提供了两种基于Http连接的Rest Client
- Java Low Level REST Client
Elasticsearch 的官方低级客户端。它允许通过 http 与 Elasticsearch 集群通信。将请求编组和响应取消编组给用户。它与所有 Elasticsearch 版本兼容。 - Java High Level REST Client
Elasticsearch 的官方高级客户端。基于低级客户端,它公开 API 特定方法并处理请求编组和响应解组。
spring-data-elasticsearch
本文教程在Spring Boot框架中使用Rest Client,而Spring Boot已经帮我们集成好了用于ES操作的spring-data-elasticsearch
在spring-data-elasticsearch中我们可以发现一个核心的操作类ElasticsearchRestTemplate,而它是基于Java High Level REST Client的二次封装

Spring Boot中配置
在Spring Boot中用于操作ES的Start的Maven pom配置如下,它的version版本受Spring Boot版本控制,所以我们一般不需要指定其版本
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>
application.yml配置文件
##如果为elasticsearch配置了安全账号和密码,需要指定其username和password,urls是配置集群内部的主机地址
spring:
elasticsearch:
rest:
uris: http://192.168.31.100:9200
connection-timeout: 10000
到此为止,Spring Boot集成elasticsearch操作,就已经完成了,是不是有点So easy的感觉啦?
实体映射
这一点操作跟JPA是一模一样的方式,通过在实体类上的注解,而自动创建其mapping

对于实体类里的每一个字段,我们可以为其指定@Field注解,并设置其相关值,而建立对应的mapping映射关,如果没有指定它在ES中映射类型,则会自动为其生成类型。

继承接口
映射(map)关系也建立好了,现在还需要为每个实体创建一个Repository,而这些操作都是spring为我们提供的,为我们生成最基础的CRUD操作,跟Mybatis-plus的操作是一模一样

我们只需要创建一个接口,通过该接口继承ElasticsearchRepository这个泛型接口,在泛型中指定对应的实体类,是不是有点像是Mybatis-plus中的BaseMapper?
至此,实际上我们一行操作ES的代码都没有编写,就已经建立好了实体与ES中数据的映射关系和在ES中操作实体的CRUD基础操作。

在其它地方需要使用的时候,直接注入这个Repository接口就行,Spring会为我们自动生成代理类。
n. Elasticsearch JAVA API操作的更多相关文章
- Elasticsearch java api操作(二)(Java High Level Rest Client)
一.说明: 一.Elasticsearch提供了两个JAVA REST Client版本: 1.java low level rest client: 低级别的rest客户端,通过http与集群交互, ...
- Elasticsearch java api操作(一)(Java Low Level Rest Client)
一.说明: 一.Elasticsearch提供了两个JAVA REST Client版本: 1.java low level rest client: 低级别的rest客户端,通过http与集群交互, ...
- Elasticsearch java api 基本搜索部分详解
文档是结合几个博客整理出来的,内容大部分为转载内容.在使用过程中,对一些疑问点进行了整理与解析. Elasticsearch java api 基本搜索部分详解 ElasticSearch 常用的查询 ...
- 第08章 ElasticSearch Java API
本章内容 使用客户端对象(client object)连接到本地或远程ElasticSearch集群. 逐条或批量索引文档. 更新文档内容. 使用各种ElasticSearch支持的查询方式. 处理E ...
- Elasticsearch Java API深入详解
0.题记 之前Elasticsearch的应用比较多,但大多集中在关系型.非关系型数据库与Elasticsearch之间的同步.以上内容完成了Elasticsearch所需要的基础数据量的供给.但想要 ...
- Elasticsearch Java API 很全的整理
Elasticsearch 的API 分为 REST Client API(http请求形式)以及 transportClient API两种.相比来说transportClient API效率更高, ...
- hive-通过Java API操作
通过Java API操作hive,算是测试hive第三种对外接口 测试hive 服务启动 package org.admln.hive; import java.sql.SQLException; i ...
- [搜索]ElasticSearch Java Api(一) -添加数据创建索引
转载:http://blog.csdn.net/napoay/article/details/51707023 ElasticSearch JAVA API官网文档:https://www.elast ...
- Elasticsearch java api 常用查询方法QueryBuilder构造举例
转载:http://m.blog.csdn.net/u012546526/article/details/74184769 Elasticsearch java api 常用查询方法QueryBuil ...
- hadoop2-HBase的Java API操作
Hbase提供了丰富的Java API,以及线程池操作,下面我用线程池来展示一下使用Java API操作Hbase. 项目结构如下: 我使用的Hbase的版本是 hbase-0.98.9-hadoop ...
随机推荐
- 如何高效完成ECS多环境部署?
简介:通过本文,你可以了解到,如何通过云效流水线有效拉通开发与运维,打破二者之间的壁垒墙,让开发与运维高效联动.在软件开发和部署过程中,我们的软件往往需要在不同的运行环境中运行,例如:开发人员本地开 ...
- 如何专业化监控一个Kubernetes集群?
简介: 本文会介绍 Kubernetes 可观测性系统的构建,以及基于阿里云云产品实现 Kubernetes 可观测系统构建的最佳实践. 作者:佳旭 阿里云容器服务技术专家 引言 Kubernetes ...
- [Go] golang 两个数组 list 的合并方式
s := append([]int{1, 2}, []int{3, 4}...) Tool:在线Golang代码运行 Cool:在线 AI 编程助手 https://stackoverflow.com ...
- 《Effective C++》第三版-1. 让自己习惯C++(Accustoming Yourself to C++)
目录 条款01:视C++为一个语言联邦(View C++ as a federation of languages) 条款02:尽量以const.enum.inline替换#define(Prefer ...
- SpringBoot注入时设置《多例》
SpringBoot设置多例 1.准备数据 测试接口 package com.cc.jschdemo.springmultiton; /** * <p>spring多例测试</p&g ...
- docker-compose 安装 mysql:5.7.31
目录 一.新建一个启动服务的目录 二.新建文件docker-compose.yml 三.新建角本文件 init-mysql.sh 四.实使化目录和配置文件 启动服务 登陆mysql 其它操作 参考文档 ...
- ansible(3)--ansible的相关命令行工具
目录 1 ansible命令详解 2 ansible-doc显示模块帮助信息 3 ansible-playbook 4 ansible-galaxy 5 ansible-console 1 ansib ...
- JDK源码阅读-------自学笔记(二十一)(java.util.ArrayList详细版集合类)
一.前景提要 本人经历了IT行业的多种类型企业,外包/创业小公司/中型公司,一步步成长起来,现在可以给大家透露下为什么进大企业在IT行业是重要的: 在外包公司,你要做的就是对接别人写好的接口,然后按照 ...
- go新手常踩的坑
作为一个5年的phper,这两年公司和个人都在顺应技术趋势,新项目慢慢从php转向了go语言,从2021年到现在,笔者手上也先后开发了两个go项目.在学习go语言的过程中也学习并总结了一些相关的东西, ...
- MySQL查询某个字段含有字母数字的值
1.正则表达式(REGEXP) 查询MySQL表中某个字段含有字母和数字的值,可以使用正则表达式(REGEXP)来匹配这样的模式.在MySQL中,正则表达式是一个强大的工具,可以用来搜索和匹配字符串中 ...