【Es】基础入门:开启全文搜索的大门

文章目录

在当今数据爆炸的时代,如何高效地存储、检索和分析海量数据成为了众多开发者和企业面临的关键挑战。Elasticsearch(简称 ES)作为一款开源的分布式搜索和分析引擎,凭借其卓越的性能、强大的功能以及良好的扩展性,在众多领域得到了广泛应用。今天,就让我们一同走进 ES 的世界,开启全文搜索的大门。

一、Elasticsearch 是什么​

Elasticsearch 是基于 Apache Lucene 构建的分布式搜索引擎。它提供了简单易用的 RESTful API,使得开发者可以方便地进行数据的索引、搜索和分析操作。与传统数据库不同,ES 专注于全文搜索和实时数据分析,能够快速处理复杂的查询请求,为用户提供精准的搜索结果。​

二、核心概念解读​

索引(Index)​

索引在 ES 中类似于关系型数据库中的数据库概念,是一个存储相关文档的集合。每个索引都有自己的名称,并且可以包含多个类型(在 ES 7.x 及以上版本中,类型的概念逐渐弱化,推荐一个索引只存储一种类型的数据)。例如,在一个电商系统中,可以创建一个名为 "products" 的索引来存储商品信息。​

文档(Document)​

文档是 ES 中最小的存储单元,类似于关系型数据库中的行记录。每个文档都包含了一系列的字段和对应的值,并且有一个唯一的标识符。一个商品文档可能包含 "name"(商品名称)、"price"(价格)、"description"(描述)等字段。文档以 JSON 格式进行存储和传输,这种格式具有良好的可读性和灵活性。​

映射(Mapping)​

映射定义了索引中文档的结构和字段的数据类型。它类似于关系型数据库中的表结构定义,但更加灵活。通过映射,可以指定字段是否被索引、是否可搜索、是否存储等属性。例如,对于 "price" 字段,可以将其定义为数值类型,以便进行范围查询和聚合操作;对于 "description" 字段,可以将其定义为文本类型,并指定分词器,以便进行全文搜索。​

分片(Shard)​

为了处理大规模数据和提高搜索性能,ES 将索引划分为多个分片。每个分片都是一个独立的 Lucene 索引,可以存储在不同的节点上。当进行搜索时,ES 会并行地在各个分片上执行查询,然后将结果汇总返回。分片机制使得 ES 具有良好的扩展性,随着数据量的增加,可以通过添加更多的节点和分片来提高系统的处理能力。​

副本(Replica)​

副本是分片的拷贝,用于提高数据的可用性和容错性。每个分片可以有多个副本,副本可以存储在不同的节点上。当某个节点出现故障时,ES 可以自动从副本中获取数据,确保系统的正常运行。同时,副本还可以用于分担读请求的负载,提高搜索性能。​

三、基本操作入门​

安装与启动​

首先,从 Elasticsearch 官方网站下载安装包,解压后即可使用。在启动 ES 之前,需要根据实际需求对配置文件(elasticsearch.yml)进行一些基本配置,如设置集群名称、节点名称、网络绑定地址等。配置完成后,通过命令行启动 ES:​

java 复制代码
bin/elasticsearch​

创建索引​

使用 ES 的 RESTful API 可以方便地创建索引。例如,通过以下命令创建一个名为 "my_index" 的索引:​

java 复制代码
PUT http://localhost:9200/my_index​

在创建索引时,还可以指定索引的一些设置,如分片数、副本数等:​

java 复制代码
PUT http://localhost:9200/my_index​
{​
    "settings": {​
        "number_of_shards": 3,​
        "number_of_replicas": 1​
    }​
}​

插入文档​

向索引中插入文档同样通过 RESTful API 实现。假设我们要向 "my_index" 索引中插入一个文档,文档内容如下:​

java 复制代码
{​
    "title": "Elasticsearch入门教程",​
    "author": "John Doe",​
    "content": "这是一篇关于Elasticsearch的入门教程,介绍了基本概念和操作方法。"​
}​

可以使用以下命令插入文档:​

java 复制代码
POST http://localhost:9200/my_index/_doc​
{​
    "title": "Elasticsearch入门教程",​
    "author": "John Doe",​
    "content": "这是一篇关于Elasticsearch的入门教程,介绍了基本概念和操作方法。"​
}​

ES 会自动为文档生成一个唯一的标识符。如果需要指定文档的标识符,可以使用以下命令:​

java 复制代码
PUT http://localhost:9200/my_index/_doc/1​
{​
    "title": "Elasticsearch入门教程",​
    "author": "John Doe",​
    "content": "这是一篇关于Elasticsearch的入门教程,介绍了基本概念和操作方法。"​
}​

搜索文档​

ES 提供了强大的搜索功能。可以通过多种方式进行搜索,如根据字段值进行精确搜索、全文搜索、范围搜索等。例如,搜索 "my_index" 索引中标题包含 "Elasticsearch" 的文档:​

java 复制代码
GET http://localhost:9200/my_index/_search​
{​
    "query": {​
        "match": {​
            "title": "Elasticsearch"​
        }​
    }​
}​

搜索结果将以 JSON 格式返回,包含匹配的文档列表以及相关的元数据信息。​

四、总结​

通过以上的介绍,我们对 Elasticsearch 的基本概念和操作有了初步的了解。Elasticsearch 的强大之处不仅在于其高效的搜索功能,还在于其分布式架构带来的扩展性和容错性。在后续的文章中,我们将深入探讨 ES 的高级特性和应用场景,如分布式部署、集群管理、数据聚合分析等。希望本文能为你打开 Elasticsearch 的大门,让你在全文搜索和数据分析的道路上迈出坚实的第一步。​

相关推荐
sibylyue1 小时前
搜索引擎简介
搜索引擎
青云交1 小时前
Java 大视界 -- 基于 Java 的大数据分布式存储在工业互联网数据管理与边缘计算协同中的创新实践(364)
java·大数据·边缘计算·工业互联网·分布式存储·paxos·数据协同
数据爬坡ing2 小时前
软件工程之可行性研究:从理论到实践的全面解析
大数据·流程图·软件工程·可用性测试
晴天彩虹雨2 小时前
统一调度与编排:构建自动化数据驱动平台
大数据·运维·数据仓库·自动化·big data·etl
SelectDB5 小时前
浩瀚深度:从 ClickHouse 到 Doris,支撑单表 13PB、534 万亿行的超大规模数据分析场景
大数据·数据库·apache
SelectDB5 小时前
公开免费!Apache Doris & SelectDB 培训与认证课程正式上线
大数据·数据库·apache
mykyle6 小时前
Elasticsearch-8.17.0 centos7安装
大数据·elasticsearch·jenkins
大视码垛机6 小时前
协作机器人掀起工厂革命:码垛场景如何用数据重塑制造业命脉?
大数据·数据库·人工智能
StarRocks_labs6 小时前
Lakehouse x AI ,打造智能 BI 新体验
大数据·starrocks·人工智能·iceberg·lakehouse·智能bi·湖仓分析
IvanCodes7 小时前
三、Spark 运行环境部署:全面掌握四种核心模式
大数据·分布式·spark