Elasticsearch的入门学习和概念学习

elasticsearch学习

1.ES是 什么?

es是一个基于Lucene的搜索服务器,是一个基于分布式多用户能力的全文搜索引擎,基于restful web接口。

大白话:是一个分布式、高性能、高可用、可伸缩的搜索和分析系统。

2.ES的功能?
  • 此种场景不支持包含频繁更新、事务(transaction)的操作。

a.分布式的搜索引擎和数据分析引擎

b.全文检索,结构化检索,数据分析

c.对海量数据进行近实时的处理。

d.elasticsearch作为传统数据库的一个补充,比如全文检索,同义词处理,相关度排名(如热度),复杂数据分析。

  • 简单点来说就是:

    查询快并且可以复杂模糊查询等 , 数据分析, 速度快, 可扩展性, 灵活性。

3.ES和我们常用的数据库有什么不同呢?

1.响应时间非常快(PB级数据是毫秒反应)

  • 在大数据相似的计算与查找或简单计算时,es的分布式并行计算有绝对优势。
  • 在某一个唯一的值(如:用会员id找会员)这是用mysql好一点。

2.分词(倒排索引)

  • 倒排索引建立的是分词(Trem)和文档(Document)之间的映射关系,在倒排索引中,数据是面向词的(Term)而不是面向文档的。

Elasticsearch的入门学习和概念学习

  • 倒排索引-----查询过程

查询包含“搜索引擎”的文档

1.通过倒排序获得“搜索引擎”对应的文档id列表,有1,3

2.通过正排序索引查询1和3的完整内容。

3.返回做种结果。

4.遍历方式

  • ES有分片的概念,一个大的索引会被分成多个分片进行存储数据,使用分布式的架构对分片进行并行搜索(基于倒排)
  • 传统数据库遍历,属于正向全表扫描。

ES没有事务的概念,不支持回滚,无法恢复删除数据。

Relational DB -> Databases -> Tables -> Rows -> Columns
关系型数据库 数据库 表 行 列 Elasticsearch -> Indices -> Types -> Documents -> Fields
Elasticsearch 索引(indexName) 类型 (type) 文档 域(字段)

Elasticsearch的入门学习和概念学习

4.ES的使用场景?

1.记录和日志分析

Logstash是一个开源的服务器端数据处理管道,支持各种输入选择,可以在同一时间从多常用来源捕捉事件,可以同时从多个数据源获取数据,并对其进行转换,发到我们常用ES中。

2.采集和组合公共数据

与日志数据一样,Elastic Stack拥有大象工具,可以轻松抓取和索引远程数据。

3.全文检索

4.事件数据和指标

ES可以很好的处理时间序列数据,如指标和应用程序事件。

5.数据可视化

elasticsearch都有常用查询。

  • matchQuery(null,null)基本匹配查询(分词查询) 不支持通配符,
  • multiQuery多个document field查询,
  • FuzzyQuery模糊查询
  • boolQuery组合查询,and , not ,or 。
  • termQuery 精确查询 (一个参数是,完全匹配),(多个参数,是批量匹配)
  • boostingQuery
  • functionScoreQuery 权重分查询
  • spanNearQuery跨度查询
  • nestedQuery嵌套查询