1.elasticsearch

1.es简介

     Elasticsearch 是一个分布式、高扩展、高实时的搜索与数据分析引擎。它能很方便的使大量数据具有搜索、分析和探索的能力。充分利用Elasticsearch的水平伸缩性,能使数据在生产环境变得更有价值。Elasticsearch 的实现原理主要分为以下几个步骤,首先用户将数据提交到Elasticsearch 数据库中,再通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据,当用户搜索数据时候,再根据权重将结果排名,打分,再将返回结果呈现给用户。

2.安装es

2.1 docker 安装
1.下载docker镜像
docker pull elasticsearch:7.7.1 2.启动 es
docker run -d --name es -p 9200:9200 -p 9300:9300 -e ES_JAVA_OPTS="-Xms512m -Xmx512m" -e "discovery.type=single-node" 7ec4f35ab452
lucence底层是Java写的,所以增加了参数,不然es开启的时候就会占用内存2G
2.2 linux 安装 es

具体查看官网,有详细过程介绍:https://www.elastic.co/guide/en/elasticsearch/reference/current/targz.html

2.springboot整合es简单测试

springboot官网地址:https://docs.spring.io/spring-data/elasticsearch/docs/4.0.1.RELEASE/reference/html/#elasticsearch.clients

es 官网地址:https://www.elastic.co/guide/en/elasticsearch/client/java-rest/current/java-rest-high-getting-started.html

2.1 添加依赖

 <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-high-level-client</artifactId>
</dependency>

2.2 配置客户端

@Configuration
public class RestClientConfig extends AbstractElasticsearchConfiguration {
/**
* 生成rest的高级客户端
* @return
*/
@Override
@Bean
public RestHighLevelClient elasticsearchClient() {
final ClientConfiguration clientConfiguration = ClientConfiguration.builder()
.connectedTo("106.52.137.XX:9200")
.build();
return RestClients.create(clientConfiguration).rest();
}
}

2.3 实体类对象

@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@ToString
@Document(indexName="person_index")
public class Person implements Serializable {
@Id
private String id;
private String name;
private Integer age;
}

2.4 测试存储数据

@Autowired
private ElasticsearchOperations operations ; @Test
public void saveEs(){
Person person = Person.builder().id("66666").name("张三").age(18).build();
IndexQuery indexQuery = new IndexQueryBuilder()
.withId(person.getId())
.withObject(person)
.build();
String documentId = operations.index(indexQuery);
log.info("================ saveEs {} =================",documentId);
}

2.5 测试读取数据

@Test
public void getPerson(){
Person person = operations.queryForObject(GetQuery.getById("66666"), Person.class);
log.info("----------------- getPerson:{} ---------------------------",person); }

3.模型对象存储

3.1 使用注解标识实体类属性

(以下摘自官方文档: https://docs.spring.io/spring-data/elasticsearch/docs/4.0.1.RELEASE/reference/html/#elasticsearch.mapping)

@Document:在类级别应用,以指示该类是映射到数据库的候选对象。最重要的属性是:

indexName:用于存储此实体的索引的名称

type:映射类型。如果未设置,则使用小写的类的简单名称。(从版本4.0开始不推荐使用)

shards:索引的分片数。

replicas:索引的副本数。

refreshIntervall:索引的刷新间隔。用于索引创建。默认值为“ 1s”。

indexStoreType:索引的索引存储类型。用于索引创建。默认值为“ fs”。

createIndex:配置是否在存储库引导中创建索引。默认值为true。

versionType:版本管理的配置。默认值为EXTERNAL。

@Id:在字段级别应用,以标记用于标识目的的字段。

@Transient:默认情况下,存储或检索文档时,所有字段都映射到文档,此注释不包括该字段。

@PersistenceConstructor:标记从数据库实例化对象时要使用的给定构造函数,甚至是受保护的程序包。构造函数参数按名称映射到检索到的Document中的键值。

@Field:在字段级别应用并定义字段的属性,大多数属性映射到各自的Elasticsearch映射定义(以下列表不完整,请查看注释Javadoc以获取完整的参考):

name:字段名称,将在Elasticsearch文档中表示,如果未设置,则使用Java字段名称。

type:字段类型,可以是文本,关键字,长整数,短整数,字节,双精度,浮点型,半浮点数,标度浮点数,日期,日期_纳米,布尔值,二进制,整数,整数范围,浮点数范围,长范围,双精度范围,日期范围,对象,嵌套,Ip,TokenCount,过滤器,展平,Search_As_You_Type。请参阅Elasticsearch映射类型

format和日期类型的pattern定义。必须为日期类型定义。format

store:标记是否将原始字段值存储在Elasticsearch中,默认值为false。

analyzer,searchAnalyzer,normalizer用于指定自定义自定义分析和正规化。

@GeoPoint:将字段标记为geo_point数据类型。如果字段是GeoPoint类的实例,则可以省略。

@TypeAlias("human") :别名

对象属性,集合可以自动转换成json

3.2 也可以自定义一些通用的对象模型字段映射关系
对于写和读的转换
  @WritingConverter
static class AddressToMap implements Converter<Address, Map<String, Object>> { @Override
public Map<String, Object> convert(Address source) { LinkedHashMap<String, Object> target = new LinkedHashMap<>();
target.put("ciudad", source.getCity());
// ... return target;
}
} @ReadingConverter
static class MapToAddress implements Converter<Map<String, Object>, Address> { @Override
public Address convert(Map<String, Object> source) { // ...
return address;
}
}

01-springboot整合elasticsearch初识的更多相关文章

  1. SpringBoot整合ElasticSearch实现多版本的兼容

    前言 在上一篇学习SpringBoot中,整合了Mybatis.Druid和PageHelper并实现了多数据源的操作.本篇主要是介绍和使用目前最火的搜索引擎ElastiSearch,并和Spring ...

  2. ElasticSearch(2)---SpringBoot整合ElasticSearch

    SpringBoot整合ElasticSearch 一.基于spring-boot-starter-data-elasticsearch整合 开发环境:springboot版本:2.0.1,elast ...

  3. springboot整合elasticsearch入门例子

    springboot整合elasticsearch入门例子 https://blog.csdn.net/tianyaleixiaowu/article/details/72833940 Elastic ...

  4. Springboot整合elasticsearch以及接口开发

    Springboot整合elasticsearch以及接口开发 搭建elasticsearch集群 搭建过程略(我这里用的是elasticsearch5.5.2版本) 写入测试数据 新建索引book( ...

  5. SpringBoot整合Elasticsearch详细步骤以及代码示例(附源码)

    准备工作 环境准备 JAVA版本 java version "1.8.0_121" Java(TM) SE Runtime Environment (build 1.8.0_121 ...

  6. Springboot整合Elasticsearch报错availableProcessors is already set to [4], rejecting [4]

    Springboot整合Elasticsearch报错 今天使用SpringBoot整合Elasticsearch时候,相关的配置完成后,启动项目就报错了. nested exception is j ...

  7. Springboot整合ElasticSearch进行简单的测试及用Kibana进行查看

    一.前言 搜索引擎还是在电商项目.百度.还有技术博客中广泛应用,使用最多的还是ElasticSearch,Solr在大数据量下检索性能不如ElasticSearch.今天和大家一起搭建一下,小编是看完 ...

  8. 😊SpringBoot 整合 Elasticsearch (超详细).md

    SpringBoot 整合 Elasticsearch (超详细) 注意: 1.环境搭建 安装es Elasticsearch 6.4.3 下载链接 为了方便,环境使用Windows 配置 解压后配置 ...

  9. SpringBoot整合elasticsearch

    在这一篇文章开始之前,你需要先安装一个ElasticSearch,如果你是mac或者linux可以参考https://www.jianshu.com/p/e47b451375ea,如果是windows ...

  10. springboot整合elasticsearch(基于es7.2和官方high level client)

    前言 最近写的一个个人项目(传送门:全终端云书签)中需要用到全文检索功能,目前 mysql,es 都可以做全文检索,mysql 胜在配置方便很快就能搞定上线(参考这里),不考虑上手难度,es 在全文检 ...

随机推荐

  1. Java实现第九届蓝桥杯耐摔指数

    耐摔指数 题目描述 x星球的居民脾气不太好,但好在他们生气的时候唯一的异常举动是:摔手机. 各大厂商也就纷纷推出各种耐摔型手机.x星球的质监局规定了手机必须经过耐摔测试,并且评定出一个耐摔指数来,之后 ...

  2. java实现第九届蓝桥杯三角形面积

    三角形面积 小明最近在玩一款游戏.对游戏中的防御力很感兴趣. 我们认为直接影响防御的参数为"防御性能",记作d,而面板上有两个防御值A和B,与d成对数关系,A=2^d,B=3^d( ...

  3. hadoop启动后,9000端口无法连接,netstat -tpnl中找不到该端口

    已解决: 需要重新格式化hdfs. 1.停止hdfs: 2.删除hdfs的相关文件目录(hdfs-site.xml中配置的存放文件的目录). 3.启动journalnode:sbin/hadoop-d ...

  4. mysql导入超大sql文件

    mysql导入超大sql文件 在网上找了个2017年行政区划的sql文件,需要导入到本地mysql库中,同事使用navicat导入的时候直接卡死了,该SQL文件差不多112MB大小.通过百度.goog ...

  5. oracle使用+简写左关联出现的结果集不一致问题

    这是使用(+)的sql语句(已简写) select a.id,b.num from a,b where a.id=b.id(+) and b.num>10 这是使用left join的sql语句 ...

  6. umi 调试

    最近在umi.  设置一个layout字段, 结果左边菜单栏就出现了. 很神奇. 决定对这个库一探究竟. 我是一个喜欢看底层库的人,网上所有的启动方式都是yarn或者npm start 启动服务.然后 ...

  7. MFC vc++严重性 代码 说明 项目 文件 行 禁止显示状态 错误 C3646 “m_SockClient”: 未知重写说明符

    严重性 代码 说明 项目 文件 行 禁止显示状态错误 C3646 “m_SockClient”: 未知重写说明符 MFC_TCP_CSocket_Client c:\users\tt2018\docu ...

  8. leetcode27之移除元素

    题目描述: 给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度. 不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改 ...

  9. 采用Socket实现UDP

    ------------恢复内容开始------------ 1.1采用Socket实现UDP1.1.1简介 Socket实现UDP的基本步骤如下: (1)创建一个Socket对象 Socket my ...

  10. QT槽函数获取信号发送对象

    Qt 在槽函数中获取信号发送对象 Qt中提供了一个函数 qobject_cast(QObject *object),可以通过这个函数判断信号发出对象 Qt 帮助文档的解释: Returns the g ...