索引==数据库

类型==表

文档==表里面的记录

属性==表里面的列

使用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的更多相关文章

  1. Spring Boot整合Elasticsearch

    Spring Boot整合Elasticsearch   Elasticsearch是一个全文搜索引擎,专门用于处理大型数据集.根据描述,自然而然使用它来存储和搜索应用程序日志.与Logstash和K ...

  2. spring boot 整合 elasticsearch 5.x

    spring boot与elasticsearch集成有两种方式.一种是直接使用elasticsearch.一种是使用data中间件. 本文只指针使用maven集成elasticsearch 5.x, ...

  3. 【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 ], ...

  4. Elasticsearch学习(3) spring boot整合Elasticsearch的原生方式

    前面我们已经介绍了spring boot整合Elasticsearch的jpa方式,这种方式虽然简便,但是依旧无法解决我们较为复杂的业务,所以原生的实现方式学习能够解决这些问题,而原生的学习方式也是E ...

  5. spring boot与ElasticSearch的集成

    本文主要介绍Spring boot与ElasticSearch的集成,因为Spring boot的教程以及ElasticSearch的学习其他博客可能更优秀,所以建议再看这篇文章前先学习学习一下Spr ...

  6. Spring Boot 集成 Elasticsearch 实战

    最近有读者问我能不能写下如何使用 Spring Boot 开发 Elasticsearch(以下简称 ES) 相关应用,今天就讲解下如何使用 Spring Boot 结合 ES. 可以在 ES 官方文 ...

  7. Spring Boot 整合 Elasticsearch,实现 function score query 权重分查询

    摘要: 原创出处 www.bysocket.com 「泥瓦匠BYSocket 」欢迎转载,保留摘要,谢谢! 『 预见未来最好的方式就是亲手创造未来 – <史蒂夫·乔布斯传> 』 运行环境: ...

  8. Spring Boot 整合 elasticsearch

    一.简介 我们的应用经常需要添加检索功能,开源的 ElasticSearch 是目前全文搜索引擎的 首选.他可以快速的存储.搜索和分析海量数据.Spring Boot通过整合Spring Data E ...

  9. ElasticSearch入门3: Spring Boot集成ElasticSearch

    第一步:创建项目elasticsearch 编写pom文件 <?xml version="1.0" encoding="UTF-8"?> <p ...

  10. Elasticsearch学习(4) spring boot整合Elasticsearch的聚合操作

    之前已将spring boot原生方式介绍了,接下将结介绍的是Elasticsearch聚合操作.聚合操作一般来说是解决一下复杂的业务,比如mysql中的求和和分组,由于博主踩的坑比较多,所以博客可能 ...

随机推荐

  1. Win10系统下WampServer运行之后显示橙色如何变成绿色的方法

    我们可能会安装wampserver在本地环境下测试网站,不过wampserver运行之后,wampserver的图标呈现出橙色,而不是绿色,这就说明了wampserver在本地环境没有启动成功.那么我 ...

  2. Kali网络环境设置

    实验目的 掌握网卡.ssh.apache配置与开启 实验原理 在终端下,修改/etc/network/interfaces网卡文件,启动ssh和apache服务. 实验内容 网卡.ssh.apache ...

  3. Tabluea、Smartbi可视化仪表盘创建流程图分享

    你知道Tableau.Smartbi在可视化仪表盘制作步骤上有何差异吗?下面一起来了解吧~ 根据上面的流程图我们可以了解到,不同于Smartbi是在同一界面即可完成的,Tableau是由很多个工作表组 ...

  4. 厌倦了excel绘制地图的繁琐操作,来看看这款可视化地图神器!

    在现代生活中,地图无论对于社会主义建设.国防.运输以至旅行都是不可缺少的.要学会正确地使用地图,必须学会如何绘制地图. 最近我发现了一款好用的可视化地图神器,比excel做地图可视化好一万倍!其实呢, ...

  5. Java基础——选择语句

    Java基础--选择语句     1. if语句 规律: 1. 首先计算表达式的值. 2. 若表达式为真,则执行对应语句,为假则不执行.   第一种: if(表达式) 语句;//多个语句可用{} 例如 ...

  6. 【windows 操作系统】进程

    前言 Windows的内部实现也近似于"一切皆文件"的思想,当然,这一切都只在内核里才有,下载一个WinObj这软件就可以看到,Windows上各种设备.分区.虚拟对象都是挂载到根 ...

  7. System.Console.WriteLine() 调用原理

    1.System.Console.WriteLine(类的实例)默认调用类的Tostring()方法.如果自定义的新类未override ToString()方法.那么调用Object.ToStrin ...

  8. 基于angularJs坐标转换指令(经纬度中的度分秒转化为小数形式 )

    最近项目中,需要用户输入经纬度信息,因为数据库设计的时候,不可能分三个字段来存储这种信息,只能用double类型来进行存储. 计算公式  double r=度+分/60+秒/3600 <!DOC ...

  9. Oracle ASM 磁盘组基础知识整理(收藏版)

    转至:https://cloud.tencent.com/developer/article/1494403 为什么要写这么一篇基础知识呢?还是有那么一点点原因的,不是胡编乱造还真是有真实存在的事件的 ...

  10. linux中at命令详解

    转至:https://blog.51cto.com/12822117/2121101 at命令: 一:简介: 计划任务,在特定的时间执行某项工作,在特定的时间执行一次,需要安装at服务,apt-get ...