Elasticsearch8.1 -- 2. Elasticsearch简介 + 基本概念介绍

什么是Elasticsearch? 官网的回答:You know, for search (and analysis)

Elasticsearch 是位于 Elastic Stack 核心的分布式搜索和分析引擎
在 Elastic Stack 中, LogstashBeats 有助于收集、聚合和丰富您的数据并将其存储在 Elasticsearch 中。Kibana 使您能够以交互方式探索、可视化和分享对数据的见解,并管理和监控堆栈。

Elasticsearch 为所有类型的数据提供近乎实时的搜索和分析。
无论您拥有结构化或非结构化文本数字数据还是地理空间数据,Elasticsearch 都能以支持快速搜索的方式高效地存储和索引它。您可以超越简单的数据检索和聚合信息来发现数据中的趋势和模式。

官方给出的用例场景包括但不限于以下:
     - 向应用或网站添加搜索框
     - 存储和分析日志、指标和安全事件数据
     - 使用机器学习实时自动建模数据行为
     - 使用 Elasticsearch 作为存储引擎自动化业务工作流程
     - 使用 Elasticsearch 作为地理信息系统 (GIS)管理、集成和分析空间信息
     - 使用 Elasticsearch 作为生物信息学研究工具来存储和处理遗传数据


文档和索引 (document and index)

  • 分布式文档存储
    Elasticsearch 是一个分布式文档存储Elasticsearch 不是将信息存储为列式数据行,而是存储已序列化为 JSON 文档的复杂数据结构

  • 倒排索引
    存储文档后,它会在"近乎实时的搜索",被索引并完全可搜索——在1 秒内。Elasticsearch 使用一种称为倒排索引的数据结构,它支持非常快速的全文搜索。倒排索引列出了出现在任何文档中的每个唯一单词,并标识了每个单词出现的所有文档

  • 索引
    ES中的 索引 不同于 mysql 中的概念, 在这里, 索引 被定义为 文档 的一个优化集合。 类似的, 可以把 ES中的 文档 比作 mysql 中的行, 则 索引 相当于 mysql 中的表或数据库。

    索引 == 文档的优化集合,文档 == 字段的集合,字段是包含数据的键值对。
    默认情况下,Elasticsearch 索引每个字段中的所有数据,并且每个索引字段都有一个专用的优化数据结构。例如,文本字段存储在倒排索引中,而数字和地理字段存储在 BKD 树中。使用每个字段的数据结构来组装和返回搜索结果的能力是 Elasticsearch 如此快速的原因。


映射 (mapping)

Elasticsearch 的 sechema 具有 动态映射显式映射 两种模式。

  • 动态映射 (Dynamic mapping)
    无需明确指定如何处理文档中可能出现的每个不同字段即可对文档进行索引。启用动态映射后,Elasticsearch 会自动检测新字段并将其添加到索引中。这种默认行为使索引和探索数据变得容易——只需开始索引文档,Elasticsearch 就会检测并将布尔值、浮点和整数值、日期和字符串映射到适当的 Elasticsearch 数据类型。

  • 显式映射 (Explicit mapping)
    可以定义规则来控制动态映射并显式定义映射以完全控制字段的存储和索引方式。
    定义自己的映射使您能够:

    • 区分全文字符串字段和精确值字符串字段
    • 执行特定语言的文本分析
    • 优化字段以进行部分匹配
    • 使用自定义日期格式
    • 使用无法自动检测到 geo_point的数据类型geo_shape

可扩展性

  • 弹性负载分布
    Elasticsearch 通过将索引中的文档分布在多个分片上,并将这些分片分布在多个节点, 从而可以达到冗余防止硬件故障。 同时Elasticsearch 会自动将 数据和查询 负载分布到所有可用节点上, 平衡多节点集群以提供可扩展性和高可用性。

  • 分片
    分片有两种类型:主分片副本分片。索引中的每个文档都属于一个主分片副本分片主分片的副本。副本分片提供数据冗余以防止硬件故障 并 增加处理读取请求(如搜索或检索文档)的容量。
    索引中主分片的数量在创建索引时是固定的,但副本分片的数量可以随时更改,而不会中断索引或查询操作。

    分片和节点数量应取决于业务数据量!!!

    • 分片越多,维护这些索引的开销就越大。
    • 分片大小越大,当 Elasticsearch 需要重新平衡集群时,移动分片所需的时间就越长。
    • elasticsearch 会把查询任务分配给各个分片,然后通过合并汇聚各个分片的结果,从而得到最终结果, 查询更多数据意味着需要更大的开销。因此并不是分片大小越大或分片数量越多,查询便会更快,这完全取决于数据量。
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • ElasticSearch 是基于 Lucene 实现的开源、分布式、RESTful接口的全文搜索引擎。Elast...
    Xuenqlve阅读 502评论 0 1
  • 摘要:Elasticsearch 《Elasticsearch搜索引擎构建入门与实战》第一章读书笔记 Elasti...
    xiaogp阅读 2,300评论 0 28
  • 数据组织: 1、逻辑设计:索引、类型、文档 索引名+类型名+文档ID,唯一确定一篇文档。可以搜索特定的类型、索引,...
    aidenliu阅读 258评论 0 0
  • 一. 接近实时(NRT Near Real Time ) Elasticsearch是一个接近实时的搜索平台。这意...
    只是甲阅读 500评论 0 0
  • * ES集群会在生产环境被长期实践, 一些重要概念, 包括应用和优化调试方法值得记录分享 * 所以, 会有关于ES...
    君剑阅读 2,492评论 0 0

友情链接更多精彩内容