ElasticSearch :
1.高度可扩展的开源全文搜索和分析引擎
2.快速地、近实时的对大数据进行存储、搜索和分析
3.用来支撑有分在的数据搜搜需求的企业级应用
ElasticSearch特点:
1.分布式
2.高可用
3.多类型:支持Rest风格
4.多API:支持http的restable
5.面向文档:不需要事先去定义一些模式
6.异步导入
7.近实时
8.基于Lucene
9.Apache协议
一、ElasticSearch 核心概念
1.近实时 从搜索到搜索文章有一个轻微的延迟
2.集群,一个或者是多个节点的一个集合,用来保存应用的全部数据,并提供基于全部节点的集成式的索引和搜索功能默认名称:ElasticSearch
3.节点:集群中一个单台的服务器,用来保存数据,并参与整个集群的一个索引和搜索的一个操作有一个名称作为唯一标识(uuid)
4.索引,加快搜索的速度,相似文档的一个集合
5.类型:文档中做进一步的细分
6.文档:索引的基本单位
7.分片,内容超出了一个节点所存储的范围,把索引分成几个分片来存储索引的部分数据,ES负责分片的分配和聚合并建立多个副本,并自动去管理节点中的分片和副本
8.副本,设置副本的原因是节点的故障时不可避免的,同时增加吞吐量,把搜索的负荷分摊到了不同的副本上去,每个索引会分配5个分片以及1个副本,集群至少会有两个节点
ElasticSearch与SpringBoot的集成
1.配置环境:
ElasticSearch2.4.4.jar
Spring Data ElasticSearch 2.1.3.RELEASE
JNA4.3.0
2.修改build.gradle
compile('org.springframwork.boot:spring-boot-starter-data-elasticsearch')
compile('net.java.dev.jna:jna:4.3.0')
二、全文搜索:是一种将文件中所有文本与搜索项匹配的文字资料检索方法
1.数据结构
结构化:指定具有固定格式或者有限长度的数据,如数据库,元数据等
非结构化:指不定长或无固定格式的锁具,如邮件,world文档等。
2.非结构化数据的检索
(1)顺序扫描法:
(2)全文搜索:将搜索的一部分进行结构化进而进行搜索
3.全文搜索实现原理
(1)建立文本库
(2)建立索引
(3)执行搜索:有用户发起请求
(4) 过滤结果
4.全文搜索实现技术(基于Java的开源实现)
(1)Lucene:开源的引擎
(2)ElasticSearch
(3)Solr
三、Elasticsearch实战
1.修改appliction.properties
#ElasticSearch 服务地址
spring.data.elasticsearch.cluster.nodes=localhost:9300
#设置连接超时时间
spring.data.elasticsearch.properties.transport.tcp.connect_timeout=120s
2.后台编码
(1)文档EsBlog
(2)定义一个资源库 EsBlogRepository
(3)资源库测试用例EsBlogRepositoryTest
(4)定义一个控制器BlogController