第一章 Elasticsearch 简介

简介

Elasticsearch 是Elastic Stack核心的分布式搜索和分析引擎。Logstash 和 Beats有助于收集、聚合和丰富您的数据并将其存储在Elasticsearch中。使用Kibana,您可以交互式地探索、可视化和共享数据的见解、并且管理和监视系统。Elasticsearch是建立索引、搜索和分析的工具。
Elasticsearch 为所有类型的数据提供实时搜索和分析。无论是结构化文本数据还是非结构化数据或是地理位置数据,Elasticsearch都能以支持快速搜索的方式有效的对其进行存储和索引。你不仅可以进行简单的数据索引,还可以汇总信息来发现数据中的趋势和模式。随着数据和查询量的增长,Elasticsearch的分布式特性使您的部署可以无缝隙增长
虽然并非每个问题都是搜索问题,但是Elasticsearch可以提供足够的速度和灵活性来处理各种用例中的数据:

  1. 将搜索添加到应用或网站
  2. 存储和分析日志、指标、安全事件数据
  3. 使用机器学习自动实时建模数据行为
  4. 使用Elasticsearch作为存储引擎来自动化业务工作流程
  5. 使用Elasticsearch 作为地理信息系统管理,集成和分析空间信息
  6. 使用Elasticsearch 作为生物信息学研究工具来存储和处理遗传数据

人们使用搜索的新颖方式使我们感到惊讶。但是,无论您的用例与其中之一相似,还是您正在使用Elasticsearch 解决新的问题,在Elasticsearch 中处理数据、文档、索引的方式都是相同的

基本概念

Elasticsearch 是面向文档的,核心概念和关系型数据库的类比;在Elasticsearch中,先前的版本会有type的概念,类似于mysql中的表,但已经被逐渐弃用。**可以在实践中,慢慢体会这些基本概念。**这里所描述的不过是笔者,自己目前的体会而已。

mysql Elasticsearch 示例(可以查看第二章的示例数据)
database indice(索引) bank
rows document account1
columns key state

数据存储到Elasticsearch :文档和索引

Elasticsearch 是一个分布式文档存储系统。 Elasticsearch 不会将信息存储为列数据的行,而是存储为已序列化为JSON文档的负载数据结构。当集群中有多个Elasticsearch 节点时,存储的文档会分布到整个集群中,并且从任何节点都可以访问。

存储特性

存储文档时,Elasticsearch 几乎实时的对其进行索引和完全搜索。Elasticsearch 使用成为倒排索引的数据结构,该结构支持非常快速的全文本搜索。反向索引列出了出现任何文档中的每个唯一单词,并标示量 每个单词出现的所有文档。

索引特性

索引可以认为是文档的优化集合,每个文档都是字段的集合,这些字段是包含数据的键值对。默认情况下,Elasticsearch 对每个字段中的所有数据建立索引,并且每个索引字段都具有专门的优化数据结构。例如:文本字段存储在倒排索引中、数字字段和地理字段存储在BKD树(Bkd树是一种动态索引数据结构,能高效且可伸缩地索引大的多维点数据集。它有 (1) 极高的空间利用率和 (2) 优秀的查询、(3) 更新性能——且这三种属性在高强度更新下依旧成立。)中。由于按字段数据结构进行组合,并返回搜索结果的能力,使得Elasticsearch才能如此之快。
schema-less

其他特性

Elasticsearch 还具有无模式(schema-less)能力,这意味着可以为文档创建索引,而无需明确指定如歌处理文档中可能出现的每个不同的字段。启动动态映射后,Elasticsearch 自动检测并将新字段添加到索引。这个默认行为使索引和浏览数据变得很容易,只需开始建立索引文档,Elasticsearch 就会检测数据所对应的类型(意思是说,不需要明确指定每个字段确定的数据类型,Elasticsearch 有能力主动识别存储的数据类型)将其映射到Elasticsearch 数据类型中。

定义自己的映射

  1. 区分全文字符串字段和精确字符串字段
  2. 执行特定语言的文本分析
  3. 优化字段以进行部分匹配
  4. 使用自定义日期格式
  5. 使用无法自动检测到的数据类型。如:geo_point、geo_shape(地理位置)

总结

为不同的目的,利用不同的方式对同一字段建立索引非常有用。例如,您可能希望将一个字符串字段索引为全文搜索的文本字段,以及作为排序或汇总数据的关键字字段。或者,使用多个语言分析器来处理包含用户输入的字符串字段的内容。
在搜索时,也会使用在索引期间应用于全文字段的分析链。当您查询全文字段时,对查询文本进行相同的分析,然后再在索引中查找术语。

搜索和分析

虽然您可以将Elasticsearch 用作文档存储并检索文档及其元数据,但真正强大之处在于能够轻松访问基于Apache Lucene所搜引擎库构建的全套搜索功能。Elasticsearch 提供了一个简单的REST API,用于管理您的集群以及索引和搜索功能。

搜索数据

  1. Elasticsearch REST API支持结构化查询,全文查询以及结合两者的复杂查询。结构化查询类似于您可以在SQL中构造的查询类型。全文查询会找到所有与查询字符串匹配的文档,并按相关性(搜索关键字和文档的匹配程度)对它们进行返回。
  2. 除了搜索单个术语外,还可以执行短语搜索,相似性搜索和前缀搜索,并获得自动完成建议。
  3. 还支持高性能地理和数字查询的优化数据结构中索引非文本数据。
  4. DSL查询语言:JSON样式的查询语言,可以访问所有的搜索功能

分析数据

  1. 聚合,是您能够构建数据的复杂摘要,并深入了解数据的关键指标、模式、趋势。由于聚合利用了用于搜索的相同数据结构,因此聚合操作也非常快。这使得您可以实时分析和可视化数据
  2. 聚合与搜索请求一起运行,您可以在单个请求中同时对相同数据搜索文档、过滤结果、执行分析。

第二章 Elasticsearch入门

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章