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中的求和和分组,由于博主踩的坑比较多,所以博客可能 ...
随机推荐
- Linux系列——挂载Windows虚拟文件夹到Linux系统
在windows操作系统上安装多台Linux虚拟机,需要方便的在windows系统和虚拟机上的Linux系统进行文件拷贝. 需要用到共享虚拟文件夹技术,将windows文件夹挂载到linux系统中 ...
- Spring源码之BeanFactoryPostProcessor(后置处理器)
Spring源码之BeanFactoryPostProcessor(后置处理器). 有点水平的Spring开发人员想必都知道BeanFactoryPostProcessor也就是常说的后置管理器,这是 ...
- [ME]不知道第几次学c语言,仍觉得水深莫测
首先声明这篇东西是个人的碎碎念,没有任何干货. 接下c语言课助教的活儿时还没什么感觉,快要开学了,才感觉到紧张,逼着自己开始看老师发来的课件,说是查错,其实算是自己再好好学一遍,免得到时候面对同学们的 ...
- 一文带你盘点市场上主流的BI产品主要有哪些
随着时代的发展,商业智能使数据分析和数据可视化的门槛不断降低,使得企业各级人员都能进行数据分析,从而加深业务洞察,推动企业发展.而在数据分析领域,BI产品发挥了十分重要的作用. 市场需求变化日益频繁 ...
- Smartbi报表产品靠易用性出圈,国内口碑第一的BI厂商
有调查显示,在对用户最关注商业智能哪些方面的调查中发现超过19%的被调查者认为产品易用性非常重要.在商业智能继续火热的2021年,BI产品的易用性深受用户的关注,并成为了选择产品的第一考虑要素. 在注 ...
- 你真的会做数据分析吗?如果不会我推荐思迈特软件Smartbi
你是否还在被以下问题所困扰? 辛苦辛苦地拿到了一堆数据,却不知道从何下手分析? 因为不会统计数据分析伤透脑筋,而打消考博的梦想? 数据分析求助无门,涌现出想要放弃学位的念头? 突然开天眼般的想到了一个 ...
- 调用WCF服务的几种方式
首先发布了一个名为PersonService的WCF服务.服务契约如下: [ServiceContract] public interface IPersonService { ...
- oj教程--排序算法(Java)
import java.util.ArrayList; import java.util.List; /** * 排序算法主类 * * @author eric */ class SortArray ...
- Linux常用文件权限命令详解
pwd pwd命令用于获取当前工作目录的绝对路径. 使用示例: pwd 效果如下图: cd cd命令用于切换工作目录. 使用示例: cd 万猫学社/ 效果如下图: 其中在路径表示时, 一个半角句号(. ...
- Azure DevOps 介绍
伴随着敏捷的遍地开花,如今各个开发团队越来越希望可以实现敏捷在自己团队内的落地,但是往往单纯的依赖人力难以实现敏捷的各个环节的管理, 大家开始渐渐的意识到,为了按时交付软件产品和服务,开发和运营工作必 ...