一、简述
ES(ElasticSearch)是一款分布式全文检索框架,每个字段可以被索引与搜索;以胜任上百个服务节点的扩展,并支持PB级别的结构化或者非结构化数据;底层基于基于Lucene实现。
ES与传统数据的区别:
1、结构名称不同:一个ES集群可以包含多个索引(数据库),每个索引又包含了很多类型(表),类型中包含了很多文档(行),每个文档使用 JSON 格式存储数据,包含了很多字段(列)。
关系型数据库 |
数据库 |
表 |
行 |
列 |
ElasticSearch |
索引 |
类型 |
文档 |
字段 |
2、ES分布式搜索,传统数据库遍历式搜索
3、ES采用倒排索引,传统数据库采用B+树索引
4、ES没有用户验证和权限控制
5、ES没有事务的概念,不支持回滚,误删不能恢复
......
本章案例源码:
或 :链接:https://pan.baidu.com/s/1ooqaIRSeX6naOZ51aBWNHA 提取码:cwsw
这里是整了一个架构集合案例,该文主要源码为sc-elasticsearch-demo项目。
二、目标
通过接口传递list对象,将集合数据插入ES索引名/类型名为”order_detail”对象中;然后再通过接口按条件查询。
(下面讲述通过插入数据时自动创建ES索引及mapping方式,也可通过sql+conf文件方式获取数据源创建ES相关,详见源码目录)
三、配置
项目中我们采用SearchGurageSSL认证方式配置,证书配置生成的可查看《SearchGuard证书配置》、《searchguard配置》、《SearchGuard客户端连接》、《SearchGuard集群版》等相关文档。
先引入ES配置
1、pom.xml中引入依赖
<!-- es插件 -->
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-elasticsearch</artifactId>
<version>3.0.4.RELEASE</version>
</dependency>
<dependency>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch</artifactId>
<version>5.6.14</version>
</dependency>
<!--SearchGurageSSL认证-->
<dependency>
<groupId>com.floragunn</groupId>
<artifactId>search-guard-ssl</artifactId>
<version>5.6.14-23</version>
</dependency>
2、在application.properties配置文件中添加配置变量,指明ssl证书存放位置、ES的IP端口及账号密码
#----------------------------------elasticsearch配置---------------------------------------------
# resources.base_location=D:\\elasticsearch\\
resources.base_location=classpath:
resources.locations1=${resources.base_location}ssl/spock.key
resources.locations2=${resources.base_location}ssl/spock.pem
resources.locations3=${resources.base_location}ssl/root-ca.pem
elasticsearch.number=1
elasticsearch.host1=192.168.71.246
elasticsearch.host2=192.168.71.246
elasticsearch.host3=192.168.71.246
elasticsearch.port=9300
elasticsearch.clu