ElasticSearch简介及安装教程(Windows)

ElasticSearch简介

Elasticsearch 是一个分布式可扩展的实时搜索和分析引擎,一个建立在全文搜索引擎 Apache Lucene™ 基础上的搜索引擎.当然 Elasticsearch 并不仅仅是 Lucene 那么简单,它不仅包括了全文搜索功能,还可以进行以下工作:

  • 分布式实时文件存储,并将每一个字段都编入索引,使其可以被搜索
  • 实时分析的分布式搜索引擎
  • 可以扩展到上百台服务器,处理PB级别的结构化或非结构化数据

基本概念

Elasticsearch是面向文档型数据库,一条数据在这里就是一个文档,用JSON作为文档序列化的格式.例如:

{
    "name" :     "John",
    "sex" :      "Male",
    "age" :      25
}

Elasticsearch和关系型数据术语对照表:

关系数据库 => 数据库 => 表 => 行 => 列(Columns)
Elasticsearch => 索引(Index) => 类型(type) => 文档(Docments) => 字段(Fields)

一个 Elasticsearch 集群可以包含多个索引(数据库),也就是说其中包含了很多类型(表)。这些类型中包含了很多的文档(行),然后每个文档中又包含了很多的字段(列).
Elasticsearch的交互,可以使用Java API,也可以直接使用HTTP的Restful API方式.

索引

Elasticsearch最关键的就是提供强大的索引能力,其精髓一切设计都是为了提高搜索的性能
但是为了提高搜索的性能,难免会牺牲某些其他方面,比如插入/更新,否则其他数据库不用混了,例如插入一条记录,其实就是直接PUT一个json的对象,这个对象有多个fields,比如上面例子中的name, sex, age,那么在插入这些数据到Elasticsearch的同时,Elasticsearch还默默的为这些字段建立索引–倒排索引,因为Elasticsearch最核心功能是搜索。

Elasticsearch是如何做到快速索引的

我们知道大多数的关系型数据库采用的索引类型为B Tree\B+ Tree,而Elasticsearch使用的是倒排索引,那么为什么倒排索引比其他数据库的索引要快呢?
传统关系型数据库采用了B Tree/B+Tree这样的数据结构,为了提高查询的效率,减少磁盘寻道次数,将多个值作为一个数组通过连续区间存放,一次寻道读取多个数据,同时也降低树的高度,Elasticsearch也是采用同样的思路,直接通过内存查找区间(term),不读磁盘,但是如果term太多,term dictionary也会很大,放内存不现实,于是有了Term Index,就像字典里的索引页一样,A开头的有哪些term,分别在哪页,可以理解term index是一颗树,因此Elasticsearch的索引效率要更快一些。

总结和思考

Elasticsearch的索引思路:

将磁盘里的东西尽量搬进内存,减少磁盘随机读取次数,结合压缩算法,用及其苛刻的态度使用内存。

使用Elasticsearch进行索引时需要注意:

  • 不需要索引的字段,一定要明确定义出来,因为默认是自动建索引的
  • 对于String类型的字段,不需要分析的也需要明确定义出来,因为默认也是会分析的
  • 选择有规律的ID很重要,随机性太大的ID(EQ:java的UUID)不利于查询

ElasticSearch安装教程

下载并安装Elasticsearch服务

1)安装Java JDK:在安装Elasticsearch引擎之前,必须安装ES需要的软件环境,安装Java JDK和配置JAVA_HOME环境变量

  • Elasticsearch5.0以上版本需要安装jdk1.8
  • 其他版本安装jdk1.7即可

2)官方下载中心:ElasticSearch Download,下载压缩包并解压到安装路径
3)开启ElasticSearch 服务:进入E:\elasticsearch-6.3.2\bin目录,双击执行 elasticsearch.bat,该脚本文件执行 ElasticSearch 安装程序,稍等片刻,打开浏览器,输入 http://localhost:9200 ,显式以下信息,说明ES安装成功。
ElasticSearch简介及安装教程(Windows)_第1张图片
4) 安装Elasticsearch head插件
为了便于管理ES,本文使用head插件,这是最初级的管理工具,在浏览器中显示ES集群,索引等信息,十分好用
4.1) 安装Elasticsearch head:
下载地址:elasticsearch-head,下载完毕后解压到任意路径上,别放在elasticsearch安装路径上
4.2)安装node.js:
下载地址:node.js
ElasticSearch简介及安装教程(Windows)_第2张图片
4.3)安装grunt:
运行head需要借助grunt命令,因此需要安装grunt
打开cmd,跳转到node.js安装目录的根目录,执行指令 npm install -g grunt -cli 进行安装grunt
4.4)安装pathomjs:
打开cmd,跳转到head目录,执行命令:npm install 进行安装pathomjs
4.5)运行head:
运行命令 grunt server,启动head服务(默认端口号是9100
用head访问elasticsearch浏览器访问: http://localhost:9100 注意这里的端口使用的是head端口

至此,我们就结束了Elasticsearch的简介及安装教程。

你可能感兴趣的:(搜索引擎,搜索引擎,分布式,elasticsearch)