文章目录
一、做者有话要说
elasticsearch是一个基于 Apache Lucene ™ 的开源搜索引擎。不管在开源仍是专有领域,Lucene 能够被认为是迄今为止最早进、性能最好的、功能最全的搜索引擎库。html
想学习好elasticsearch,首先第一步,就是阅读官方文档。目前es的版本有2.x,5.x,6.x,7.x,可见elasticsearch更新多快!!!java
官方文档连接:https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html
mysql
点进去看,有些同窗,一会儿就头晕了。由于是全英语的,不知道如何下手。我写这一篇的缘由,就是教你如何学习elasticsearch官方文档的!!!
sql
二、elasticsearch学习的步骤
2.1 elasticsearch的安装
网上的资料过多,碍于篇幅,略过数据库
2.2 es安装软件 elasticsearch head 安装
网上的资料过多,碍于篇幅,略过api
具体操做,能够参考我以前写的文章:https://blog.csdn.net/qq_34168515/article/details/108428406
服务器
2.3 Query DSL es特定语言
这个是es专门的查询语言,也是操做es必备的知识,这个是须要掌握的restful
连接:https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl.html数据结构
对于mysql熟悉的人,能够理解为mysql的sql语句
es的很是多客户端,例如:
app
Java REST Client [7.9] — other versions Java API [7.9] — other versions JavaScript API [7.x] — other versions Ruby API [7.x] — other versions Go API .NET API [7.x] — other versions PHP API [7.x] — other versions Perl API Python API eland Client Rust API Community Contributed Clients
Query DSL为上面客户端的使用提供参考。
2.4 Mapping
elasticsearch和mysql进行对比
主要是讲述,mapping对应elasticsearch的数据结构
连接:https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping.html
elasticsearch 虽然是非关系型数据库,可是也是须要很强的数据结构,并且数据结构mapping一旦初始化以后,就没法进行修改的。若是要进行修改,只能从新建立索引,也就是从新建立库
使用elasticsearch head查看索引的数据结构
2.5 Aggregations聚合查询
首先,咱们必须明确什么是聚合查询
有点相似于 SQL 中的 group by 再加一些函数方法的操做。可是要强大不少。
2.6 elasticsearch rest api
rest api,顾名思义,就是restful风格接口的api,这个是对于咱们开发来讲,是很是重要的
常⽤的HTTP动词有下面五个 GET(SELECT):从服务器取出资源(⼀项或多项)。 POST(CREATE):在服务器新建⼀个资源。 PUT(UPDATE):在服务器更新资源(客户端提供改变后的完整资源)。 PATCH(UPDATE):在服务器更新资源(客户端提供改变的属性)。 DELETE(DELETE):从服务器删除资源。
三、elasticsearch的专业术语
能够参考我以前的文章:https://blog.csdn.net/qq_34168515/article/details/108315484
我挑几个重要的来进行说明
3.1 索引(index)
⼀个索引就是⼀个拥有几分类似特征的⽂档的集合。 至关于MySQL中的数据库
3.2 映射类型(mapping type)
在⼀个索引中,你能够定义⼀种或多种类型。⼀个类型是你的索引的⼀个逻辑上的分类/分区,其语义彻底由你来定。一般,会为具备⼀组共同字段的⽂档定义⼀个类型。 相似数据库表 在7.0以后,类型只有⼀种 _doc
3.3 ⽂档(document)
⼀个⽂档是⼀个可被索引的基础信息单元。至关于MySQL中的数据表中的数据,每⼀条数据就是⼀个⽂档
3.4 分片和副本(shard & replica)
⼀个索引能够存储超出单个结点硬件限制的⼤量数据。⽐如,⼀个具备10亿⽂档的索引占据1TB的磁盘 空间,⽽任⼀节点都没有这样⼤的磁盘空间;或者单个节点处理搜索请求,响应太慢。为了解决这个问 题,Elasticsearch提供了将索引划分红多份的能⼒,这些份就叫作分⽚。当你建立⼀个索引的时候,你 能够指定你想要的分⽚的数量。每一个分⽚自己也是⼀个功能完善而且独⽴的“索引”,这个“索引”能够被 放置到集群中的任何节点上。
分片很重要,主要有两⽅⾯的缘由:
1)容许你⽔平分割/扩展你的内容容 量。
2)容许你在分⽚(潜在地,位于多个节点上)之上进行分布式的、并行的操做,进而提⾼性能/吞吐量。
四、java客户端 Java REST Client
官方地址:https://www.elastic.co/guide/en/elasticsearch/client/java-rest/current/index.html