xlvlog

 

Elasticsearch介绍

Elasticsearch 是一个分布式搜索和分析引擎,通常用于处理大规模的结构化和非结构化数据。它基于开源的 Lucene 库,提供了强大、实时的搜索能力和精细的分析功能。Elasticsearch 通常与其他工具(如 Logstash、Kibana 等)一起使用,构成了著名的 ELK Stack(后来改名为 Elastic Stack)。完整的技术栈包括:

  • Elasticsearch:用于数据存储、计算和搜索
  • Logstash/Beats:用于数据收集
  • Kibana:用于数据可视化

整套技术栈的核心就是用来存储搜索计算的Elasticsearc。

基础概念

文档:Elasticsearch 中最小的数据单元,类似于关系型数据库中的行。文档是以 JSON 格式存储的,包含一个或多个字段(key-value 对),每个字段可以有不同的数据类型。

索引: Elasticsearch 中存储、组织文档的地方,类似于传统关系型数据库的表。在 Elasticsearch 中,所有的数据都以 JSON 文档的形式存储在索引中。每个索引都有一个唯一的名字(类似数据库中的表名),这个名字用于引用和操作索引。

点击查看代码
#商品索引:组织文档的地方,每个{}是一个文档
{
    "id": 1,
    "title": "小米手机",
    "price": 3499
}

{
    "id": 2,
    "title": "华为手机",
    "price": 4999
}

{
    "id": 3,
    "title": "三星手机",
    "price": 3999
}

Type:每个文档都必须具备字段类型,7.0之前一个索引只能有一个或者多个类型,7.0开始一个索引只能创建一个 Type :_doc,8.0 之后,Type 被完全删除,解决了多 Type 索引带来的资源浪费、字段冲突、查询效率低下等问题。

Mapping:即映射,索引中文档的字段约束信息,类似表的结构约束。

Node:相当于一个 ES 实例,多个节点构成一个集群。

Cluster:多个 ES 节点的集合,用于解决单个节点无法处理的搜索需求和数据存储需求。

ES相关概念对比MySQL

工作原理

Elasticsearch 以其高性能的搜索和分析能力而闻名,主要得益于其底层的技术架构和索引机制。倒排索引是 Elasticsearch 的核心数据结构,它极大地提升了全文搜索的速度。它的工作原理可以类比为书的索引部分,快速定位某个词在文档中的位置。

  • 首先对文档内容进行分词,ES默认英文是一个单词一个词,中文是一个汉字一个词,形成词条与文档ID对应的词条库,建立索引。
  • 接着会对搜索内容进行分词,将分词后的关键词与词条库匹配,找到对应的文档ID,然后根据文档ID找到对应的文档信息。

在搜索时,用户输入某个词语,ES会直接在倒排索引中查找该词条,然后迅速定位到包含该词条的所有文档,相比与传统搜索方式需要扫描全部文档要高效的多。

posted on 2024-10-15 20:49  抓一个破绽  阅读(13)  评论(0编辑  收藏  举报

导航