【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 的大门,让你在全文搜索和数据分析的道路上迈出坚实的第一步。​

相关推荐
viperrrrrrrrrr71 分钟前
大数据学习(95)-谓词下推
大数据·sql·学习
汤姆yu43 分钟前
基于python大数据的旅游可视化及推荐系统
大数据·旅游·可视化·算法推荐
zhangjin12221 小时前
kettle从入门到精通 第九十四课 ETL之kettle MySQL Bulk Loader大批量高性能数据写入
大数据·数据仓库·mysql·etl·kettle实战·kettlel批量插入·kettle mysql
哈哈真棒2 小时前
hadoop 集群的常用命令
大数据
阿里云大数据AI技术2 小时前
百观科技基于阿里云 EMR 的数据湖实践分享
大数据·数据库
泛微OA办公系统2 小时前
上市电子制造企业如何实现合规的质量文件管理?
大数据·制造
GOTXX2 小时前
BoostSiteSeeker项目实战
前端·c++·后端·mysql·搜索引擎·项目实战·boost
镜舟科技3 小时前
迈向云原生:理想汽车 OLAP 引擎变革之路
大数据·数据库·云原生
山山而川粤3 小时前
SSM考研信息查询系统
java·大数据·运维·服务器·开发语言·数据库·考研
rkshangan4 小时前
软考高级:探寻易考科目与高效备考之路
大数据·网络