spring-boot-learning- Elasticsearch


索引==数据库
类型==表
文档==表里面的记录
属性==表里面的列
使用RestFul风格elasticSearch进行操作
添加一个索引为megacorp,类型为employee,——id为1的文档

获得一个索引:

跟新文档,实际上也是用PUT

注意箭头的地方,每次对文档进行任何操作都会改变版本数
轻量级搜索
_search代替id进行搜索所有


使用查询表达式json格式进行查询

S
Springboot整合ES
先看看我们springboot为我们自动配置了什么
在org.springframework.boot.autoconfigure 自动配置包下的

往下面看一下,会有另外一个elasticsearch的目录,里面:

注:这是另外一种和ES进行交互的工具

#######################################################################################
加入依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>
实体类对应elasticsearch的文档:
@Data
@Document(indexName = "company",type = "employees",shards = 5,replicas = 1)
/**
* indexName: 索引库名称
* type: 类型
* shards: 分片数:默认为5个
* replicas: 副本数:默认为1个
*/
public class Employe implements Serializable {
/**
*用来将对象中id和ES中_id映射
*/
@Id
private Long id;
/**
* `@Field`: 用来指定ES中的字段对应Mapping,相当于数据库中的列属性
* `type`: 用来指定ES中存储类型
*/
@Field(type = FieldType.Text)
private String name; @Field(type = FieldType.Text)
private String password; @Override
public String toString() {
return "Employee{" +
"id='" + id + '\'' +
", name='" + name + '\'' +
", password='" + password + '\'' +
'}';
}
}
获得操作接口:
/**
* 直接继承 ElasticsearchRepository接口就可以了,里面已经帮我们实现了
*
*/
@Repository
public interface EmployeRepository extends ElasticsearchRepository<Employe,Long> { }
增删改查
@SpringBootTest
class EsdApplicationTests { @Autowired
private EmployeRepository employeRepository; /**
* 插入数据:
*/
@Test
void testEmploye(){
Employe employee = new Employe();
employee.setId(5L);
employee.setName("zhi");
employee.setPassword("789");
employeRepository.save(employee); } /**
* 查询数据
*/
@Test
void testEmployeGet(){
Optional<Employe> employe = employeRepository.findById(2L);
System.out.println(employe);
} /**
* 删除数据
*/
@Test
void delEmployeDel(){
employeRepository.deleteById(2L);
} /**
* 修改数据,实际就是保存数据
*/
@Test
void updEmployeUp(){
Employe employee = new Employe();
employee.setId(5L);
employee.setName("zhi");
employee.setPassword("78955555");
employeRepository.save(employee);
} }
如何取学习一个新的东西:找官方文档:
https://www.elastic.co/guide/index.html


点进去,我们一半使用高级客户端

里面会有详细介绍怎么用:

1 找到原生的依赖:

依赖的其他包:

2 找对象

3分析类当中的方法
我新建一个工程:
导入依赖:

可以看到:

再进入spring-data里面:

查看默认的版本:

注意:我们导入的依赖必须和我们es的版本一致
自定义版本依赖
可以先点进去父pom里面看看
<artifactId>spring-boot-starter-parent</artifactId>

查看一下源码:

加入了这三个类
RestClientConfigurations.RestClientBuilderConfiguration.class,
RestClientConfigurations.RestHighLevelClientConfiguration.class,
RestClientConfigurations.RestClientFallbackConfiguration.class
都是静态内部类
其中关键的类就是RestClientBuilderConfiguration
class RestClientConfigurations {
@Configuration(proxyBeanMethods = false)
static class RestClientBuilderConfiguration {
@Bean
@ConditionalOnMissingBean
RestClientBuilder elasticsearchRestClientBuilder(RestClientProperties properties,
ObjectProvider<RestClientBuilderCustomizer> builderCustomizers) {
HttpHost[] hosts = properties.getUris().stream().map(HttpHost::create).toArray(HttpHost[]::new);
RestClientBuilder builder = RestClient.builder(hosts);
PropertyMapper map = PropertyMapper.get();
map.from(properties::getUsername).whenHasText().to((username) -> {
CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
Credentials credentials = new UsernamePasswordCredentials(properties.getUsername(),
properties.getPassword());
credentialsProvider.setCredentials(AuthScope.ANY, credentials);
builder.setHttpClientConfigCallback(
(httpClientBuilder) -> httpClientBuilder.setDefaultCredentialsProvider(credentialsProvider));
});
builder.setRequestConfigCallback((requestConfigBuilder) -> {
map.from(properties::getConnectionTimeout).whenNonNull().asInt(Duration::toMillis)
.to(requestConfigBuilder::setConnectTimeout);
map.from(properties::getReadTimeout).whenNonNull().asInt(Duration::toMillis)
.to(requestConfigBuilder::setSocketTimeout);
return requestConfigBuilder;
});
builderCustomizers.orderedStream().forEach((customizer) -> customizer.customize(builder));
return builder;
}
}
@Configuration(proxyBeanMethods = false)
@ConditionalOnClass(RestHighLevelClient.class)
static class RestHighLevelClientConfiguration {
@Bean
@ConditionalOnMissingBean
RestHighLevelClient elasticsearchRestHighLevelClient(RestClientBuilder restClientBuilder) {
return new RestHighLevelClient(restClientBuilder);
}
@Bean
@ConditionalOnMissingBean
RestClient elasticsearchRestClient(RestClientBuilder builder,
ObjectProvider<RestHighLevelClient> restHighLevelClient) {
RestHighLevelClient client = restHighLevelClient.getIfUnique();
if (client != null) {
return client.getLowLevelClient();
}
return builder.build();
}
}
@Configuration(proxyBeanMethods = false)
static class RestClientFallbackConfiguration {
@Bean
@ConditionalOnMissingBean
RestClient elasticsearchRestClient(RestClientBuilder builder) {
return builder.build();
}
}
}
spring-boot-learning- Elasticsearch的更多相关文章
- Spring Boot整合Elasticsearch
Spring Boot整合Elasticsearch Elasticsearch是一个全文搜索引擎,专门用于处理大型数据集.根据描述,自然而然使用它来存储和搜索应用程序日志.与Logstash和K ...
- spring boot 整合 elasticsearch 5.x
spring boot与elasticsearch集成有两种方式.一种是直接使用elasticsearch.一种是使用data中间件. 本文只指针使用maven集成elasticsearch 5.x, ...
- 【spring boot】【elasticsearch】spring boot整合elasticsearch,启动报错Caused by: java.lang.IllegalStateException: availableProcessors is already set to [8], rejecting [8
spring boot整合elasticsearch, 启动报错: Caused by: java.lang.IllegalStateException: availableProcessors ], ...
- Elasticsearch学习(3) spring boot整合Elasticsearch的原生方式
前面我们已经介绍了spring boot整合Elasticsearch的jpa方式,这种方式虽然简便,但是依旧无法解决我们较为复杂的业务,所以原生的实现方式学习能够解决这些问题,而原生的学习方式也是E ...
- spring boot与ElasticSearch的集成
本文主要介绍Spring boot与ElasticSearch的集成,因为Spring boot的教程以及ElasticSearch的学习其他博客可能更优秀,所以建议再看这篇文章前先学习学习一下Spr ...
- Spring Boot 集成 Elasticsearch 实战
最近有读者问我能不能写下如何使用 Spring Boot 开发 Elasticsearch(以下简称 ES) 相关应用,今天就讲解下如何使用 Spring Boot 结合 ES. 可以在 ES 官方文 ...
- Spring Boot 整合 Elasticsearch,实现 function score query 权重分查询
摘要: 原创出处 www.bysocket.com 「泥瓦匠BYSocket 」欢迎转载,保留摘要,谢谢! 『 预见未来最好的方式就是亲手创造未来 – <史蒂夫·乔布斯传> 』 运行环境: ...
- Spring Boot 整合 elasticsearch
一.简介 我们的应用经常需要添加检索功能,开源的 ElasticSearch 是目前全文搜索引擎的 首选.他可以快速的存储.搜索和分析海量数据.Spring Boot通过整合Spring Data E ...
- ElasticSearch入门3: Spring Boot集成ElasticSearch
第一步:创建项目elasticsearch 编写pom文件 <?xml version="1.0" encoding="UTF-8"?> <p ...
- Elasticsearch学习(4) spring boot整合Elasticsearch的聚合操作
之前已将spring boot原生方式介绍了,接下将结介绍的是Elasticsearch聚合操作.聚合操作一般来说是解决一下复杂的业务,比如mysql中的求和和分组,由于博主踩的坑比较多,所以博客可能 ...
随机推荐
- 日常问题记录 E138: Can't write viminfo file /root/.viminfo!
问题是因为磁盘不足导致 看磁盘占用情况 排查:du --max-depth=1 -h 这个命令可以查看当前目录下哪个目录占用最大,然后再进一步看
- kali主机探测命令与工具集
实验目的 熟悉ping.arping.fping.hping3.nbtscan.nping.p0f.xprobe2工具对目标主机的探测方法. 实验原理 目标识别工具发送特殊构造的数据包,根据返回的应答 ...
- BI工具做数据可视化项目频频失败的原因
现如今数据可视化可谓是非常之火,随着硬件价格的一降再降,仿佛做数据可视化项目,你没有数据大屏,你就没有逼格.理想很丰满,现实很骨感,并不是每一个数据可视化项目都能够成功.数据可视化项目的进行,无外乎是 ...
- CDH6.2.0离线安装(详细)
目录 01 准备工作 02 环境配置 03 CDH安装 报错 01 准备工作 官网地址下载页面:https://www.cloudera.com/downloads/cdh.html,现在下载好像需要 ...
- 关于WinForm布局那些事情
最近项目中,需要用WinForm做一些简单的功能,给第三方作为测试用.本来想着简单的拖几个控件,布局一下就了事了的.但是因为第三方是个大客户,需要展示出我们的技术水平.遂好好的研究了一下WinForm ...
- ORACLE SQL*PLUS 命令大全
转至:https://www.cnblogs.com/kerrycode/archive/2011/06/09/2076248.html 其实网上已经有SQL*PLUS命令大全这方面的资料了,不过大都 ...
- 抛弃模板,一种Prompt Learning用于命名实体识别任务的新范式
原创作者 | 王翔 论文名称: Template-free Prompt Tuning for Few-shot NER 文献链接: https://arxiv.org/abs/2109.13532 ...
- 3D打印第二弹:狗牌
给朋友做一个狗牌(误,给朋友的狗狗做一个狗牌 1. 设计 没有设计功底,看看别人是如何做的,搜到一个狗牌: 照着这个做一个,正面是上图这种的:狗狗名字+狗爪子:另一面是手机号加联系说明文字. 2. 建 ...
- Vue 源码解读(11)—— render helper
前言 上一篇文章 Vue 源码解读(10)-- 编译器 之 生成渲染函数 最后讲到组件更新时,需要先执行编译器生成的渲染函数得到组件的 vnode. 渲染函数之所以能生成 vnode 是通过其中的 _ ...
- php 23种设计模型 - 适配器模式
适配器模式(Adapter) 适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁.这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能. 这种模式涉及到一个单一的类, ...