Elasticsearch是什么?

Elasticsearch简称ES,是一个基于Lucene构建的开源、分布式、Restful接口的全文搜索引擎,还是一个分布式文档数据库。天生就是分布式、高可用、可扩展的,可以在很短的时间内存储、搜索和分析大量的数据。

什么是全文搜索?

全文搜索也叫全文检索,是指扫描文章中的每一个词,对每一个词进建立一个索引,指明该词在文章中出现的次数和位置,当前端用户输入的关键词发起查询请求后,搜索引擎就会根据事先建立的索引进行查找,并将查询的结果响应给用户。

这里有两个关键字:分词和索引,Elasticsearch内部会完成这两件事情,对保存的文本内容按规则进行分词,并对这些分词后的词条建立索引,供用户查询。

什么是倒排索引?

全文搜索过程根据关键词创建的索引叫倒排索引,顾名思义,建立正向关系“文本内容-关键词”叫正排索引,后续会介绍,倒排索引就是把原有关系倒过来,建立成“关键词-文本内容”的关系,这样的关系非常利于搜索。

举个例子:

  • 文本1:I have a friend who loves smile
  • 文本2:I have a dream today

先进行英文分词,再建立倒排索引,得到一份简易的“关键词-文本”的映射关系如下:

关键词 文本编号
I 1,2
have 1,2
a 1,2
friend 1
who 1
loves 1
smile 1
dream 2
today 2

有了这个映射表,搜索"have"关键词时,立即就能返回id为1,2的两条记录,搜索today时,返回id为2的记录,这样的搜索性能非常高。当然Elasticsearch维护的倒排索引包含更多的信息,此处只是作简易的原理介绍。

Elasticsearch什么场景适用?

常见场景
  1. 搜索类场景

    常见的搜索场景比如说电商网站、招聘网站、新闻资讯类网站、各种app内的搜索。

  2. 日志分析类场景

    经典的ELK组合(Elasticsearch/Logstash/Kibana),可以完成日志收集,日志存储,日志分析查询界面基本功能,目前该方案的实现很普及,大部分企业日志分析系统都是使用该方案。

  3. 数据预警平台及数据分析场景

    例如电商价格预警,在支持的电商平台设置价格预警,当优惠的价格低于某个值时,触发通知消息,通知用户购买。

    数据分析常见的比如分析电商平台销售量top 10的品牌,分析博客系统、头条网站top 10关注度、评论数、访问量的内容等等。

  4. 商业BI系统

    比大型零售超市,需要分析上一季度用户消费金额,年龄段,每天各时间段到店人数分布等信息,输出相应的报表数据,并预测下一季度的热卖商品,根据年龄段定向推荐适宜产品。Elasticsearch执行数据分析和挖掘,Kibana做数据可视化。

常见案例
  • 维基百科、百度百科:有全文检索、高亮、搜索推荐功能
  • stack overflow:有全文检索,可以根据报错关键信息,去搜索解决方法。
  • github:从上千亿行代码中搜索你想要的关键代码。
  • 日志分析系统:各企业内部搭建的ELK平台。
  • 等等

Elasticsearch的架构图

架构各组件简单释义:

  • gateway 底层存储系统,一般为文件系统,支持多种类型。
  • distributed lucence directory 基于lucence的分布式框架,封装了建立倒排索引、数据存储、translog、segment等实现。
  • 模块层 ES的主要模块,包含索引模块、搜索模块、映射模块。
  • Discovery 集群node发现模块,用于集群node之间的通信,选举coordinate node操作,支持多种发现机制,如zen,ec2等。
  • script 脚本解析模块,用来支持在查询语句中编写的脚本,如painless,groovy,python等。
  • plugins 第三方插件,各种高级功能可由插件提供,支持定制。
  • transport/jmx 通信模块,数据传输,底层使用netty框架
  • restful/node 对外提供的访问Elasticsearch集群的接口
  • x-pack elasticsearch的一个扩展包,集成安全、警告、监视、图形和报告功能,无缝接入,可插拔设计。

Elasticsearch安装使用

官网地址

https://www.elastic.co/cn/

上面有各版本的下载地址,官方文档和使用示例,请自行下载安装包。

源码地址

https://github.com/elastic/elasticsearch

上面有各版本的源码地址,可以切换到指定版本进行研究,目前选用版本为6.3.1

安装步骤
  1. 环境要求

    JDK 1.8及以上
  2. 官网下载安装包,在指定目录下直接解压
  3. 执行bin/elasticsearch(Linux,注意不能使用root账户)

    bin\elasticsearch.bat(Windows)
  4. curl http://localhost:9200/或浏览器打开http://localhost:9200/地址,看到下面的响应表示启动成功:
{
"name" : "node-1",
"cluster_name" : "hy-application",
"cluster_uuid" : "lJ4DRWOvQauAy-VEYiZc2g",
"version" : {
"number" : "6.3.1",
"build_flavor" : "default",
"build_type" : "tar",
"build_hash" : "eb782d0",
"build_date" : "2018-06-29T21:59:26.107521Z",
"build_snapshot" : false,
"lucene_version" : "7.3.1",
"minimum_wire_compatibility_version" : "5.6.0",
"minimum_index_compatibility_version" : "5.0.0"
},
"tagline" : "You Know, for Search"
}
  1. kibana下载解压启动

    执行bin/kibana(Linux,注意不能使用root账户)或bin\kibana.bat(Windows),如果kibana和elasticsearch部署在同一台机器上,使用默认的配置文件即可。
  2. 验证kibana,浏览器上输入http://192.168.17.137:5601/,出现如下界面表示启动成功:

    图二

小结

本篇简单介绍了Elasticsearch的基本概念,适用场景和主要的功能框架,以及最简单的用于学习验证的安装启动步骤,作为Elasticsearch系统的开篇学习,Elasticsearch有个特点就是开箱即用,如果是用作学习,或是中小型应用,数据量比较少、操作不是很复杂的话,直接启动就可以用了。后续的Elasticsearch学习,如无特别说明,均以6.3.1版本为例。

专注Java高并发、分布式架构,更多技术干货分享与心得,请关注公众号:Java架构社区

Elasticsearch系列---初识Elasticsearch的更多相关文章

  1. 【原创】《从0开始学Elasticsearch》—初识Elasticsearch

    目录 1. Elasticsearch 是什么2. Elasticsearch 中基本概念3. Elasticsearch 安装4. 访问 Elasticsearch 1. Elasticsearch ...

  2. Elasticsearch系列---初识搜索

    概要 本篇主要介绍搜索的报文结构含义.搜索超时时间的处理过程,提及了一下多索引搜索和轻量搜索,最后将精确搜索与全文搜索做了简单的对比. 空搜索 搜索API最简单的形式是不指定索引和类型的空搜索,它将返 ...

  3. Elasticsearch系列---初识mapping

    概要 本篇简单介绍一下field数据类型mapping的相关知识. mapping是什么? 前面几篇的实战案例,我们向Elasticsearch索引数据时,只是简单地把JSON文本放在请求体里,至于J ...

  4. Elasticsearch 系列3 --- Elasticsearch配置

    一. 位置 ES的配置文件位于安装目录\config下面,主要有 (1) elasticsearch.yml ES系统的配置: (2) jvm.options Java虚拟机配置: (3) log4j ...

  5. elasticsearch系列一elasticsearch(ES简介、安装&配置、集成Ikanalyzer)

    一.ES简介 1. ES是什么? Elasticsearch 是一个开源的搜索引擎,建立在全文搜索引擎库 Apache Lucene 基础之上 用 Java 编写的,它的内部使用 Lucene 做索引 ...

  6. ElasticSearch实战系列二: ElasticSearch的DSL语句使用教程---图文详解

    前言 在上一篇中介绍了ElasticSearch集群和kinaba的安装教程,本篇文章就来讲解下 ElasticSearch的DSL语句使用. ElasticSearch DSL 介绍 Elastic ...

  7. ElasticSearch实战系列三: ElasticSearch的JAVA API使用教程

    前言 在上一篇中介绍了ElasticSearch实战系列二: ElasticSearch的DSL语句使用教程---图文详解,本篇文章就来讲解下 ElasticSearch 6.x官方Java API的 ...

  8. ElasticSearch实战系列四: ElasticSearch理论知识介绍

    前言 在前几篇关于ElasticSearch的文章中,简单的讲了下有关ElasticSearch的一些使用,这篇文章讲一下有关 ElasticSearch的一些理论知识以及自己的一些见解. 虽然本人是 ...

  9. ElasticSearch实战系列五: ElasticSearch的聚合查询基础使用教程之度量(Metric)聚合

    Title:ElasticSearch实战系列四: ElasticSearch的聚合查询基础使用教程之度量(Metric)聚合 前言 在上上一篇中介绍了ElasticSearch实战系列三: Elas ...

随机推荐

  1. java8 按两个属性分组,并返回扁平List; stream排序

    --------------- java8 按两个属性分组,并返回扁平List /** * 设置大区小区分组排序 * @param dtoList */ private List<Perform ...

  2. Python爬虫批量下载糗事百科段子,怀念的天王盖地虎,小鸡炖蘑菇...

    欢迎添加华为云小助手微信(微信号:HWCloud002 或 HWCloud003),输入关键字"加群",加入华为云线上技术讨论群:输入关键字"最新活动",获取华 ...

  3. postgresql,postgis,geoserver 发布地图服务,并用.net mvc openlayers3进行显示

    1.所需工具 postgres版本 9.6.1 对应的postgis geoserver 2.8.2 openlayers3 2.将postgres postgis ,geosever安装好,再用如下 ...

  4. 【原创】003 | 搭上基于SpringBoot事务思想实战专车

    前言 如果这是你第二次看到师长,说明你在觊觎我的美色! 点赞+关注再看,养成习惯 没别的意思,就是需要你的窥屏^_^ 专车介绍 该趟专车是开往基于Spring Boot事务思想实战的专车,在上一篇 搭 ...

  5. acm博弈论基础总结

    acm博弈论基础总结 常见博弈结论 Nim 问题:共有N堆石子,编号1..n,第i堆中有个a[i]个石子. 每一次操作Alice和Bob可以从任意一堆石子中取出任意数量的石子,至少取一颗,至多取出这一 ...

  6. ARTS-S idea常用快捷键

    1.生成main方法 先输入p,再输入Ctrl+j,选psvm,回车. 2.生成System.out.println() 先输入s,再输入Ctrl+j,选sout,回车. 输入A.B.C.D形式的快捷 ...

  7. ARTS-S mongo关闭与启动

    关闭 mongo admin --eval "db.shutdownServer()" 删除dbdata目录下的mongo.lock 启动 /usr/bin/mongod --db ...

  8. windows下安装ssdb

    官方下载 http://ssdb.io/docs/install.html 这是官方网站 官方建议 Do not run SSDB server on Windows system for a pro ...

  9. 【Web技术】401- 在 React 中使用 Shadow DOM

    本文作者:houfeng 1. Shadow DOM 是什么 Shadow DOM 是什么?我们先来打开 Chrome 的 DevTool,并在 'Settings -> Preferences ...

  10. 基于RT-Thread的开源飞控StarryPilot

    背景描述 近年来无人机应用市场日趋火热,无人机开始被应用在多个领域之中,比如航拍,植保,运输,安防等.随着应用场景的增加,对于无人机的大脑一飞控,的性能和功能要求也变得越来越高.国内具有一大批优质的无 ...