0

0

Elasticsearch是什么?Elasticsearch 能够被用在什么地方?

零下一度

零下一度

发布时间:2017-06-23 16:10:36

|

4448人浏览过

|

来源于php中文网

原创

  • elasticsearch 版本:5.4

  • Elasticsearch快速入门 第1篇:Elasticsearch入门

  • Elasticsearch快速入门 第2篇:Elasticsearch和Kibana安装

  • Elasticsearch快速入门 第3篇:Elasticsearch索引和文档操作

  • Elasticsearch快速入门 第4篇:Elasticsearch文档查询

Elasticsearch 是一个高伸缩的开源全文搜索和分析引擎。它可以快速地、近实时的存储,搜索和分析大规模的数据。一般被用作底层引擎/技术,为具有复杂搜索功能和要求的应用提供强有力的支撑。

Elasticsearch 能够被用在这些地方:

  1. 假设有一个在线的商店网站,为了让客户搜索到销售的产品。在这种情况下,可以使用 Elasticsearch 来存储你的整个产品目录和库存,并提供搜索以及自动给他们一些建议。

  2. 假设想要收集日志或者交易数据,通过分析、挖掘来寻找趋势,统计,总结或异常。在这种情况下,可以使用 LogStashElasticsearch/Logstash/Kibana栈的一部分)去收集、汇总并解析你的数据,然后通过 LogStash 把这些数据递交给 Elasticsearch 。一旦 Elasticsearch 取得了数据,你就可以进行搜索并且聚合你感兴趣的信息。

  3. 假设运行一个价格提醒平台,让价格精明的客户指定一个规则,如“我有兴趣购买一个特定的电子小配件,如果下个月内,有卖家的价格低于$x,我想得到通知”。在这种情况下,你可以把卖家的价格递交到 Elasticsearch ,使用反向搜索(过滤器),将价格变动与客户查询进行匹配,一旦发现匹配结果,则通知客户。

  4. 假设有分析(商业智能)需求,希望快速调查,分析,可视化和在大量(考虑百万或十亿条记录)的数据中查找一个特设的问题。在这种情况下,你可以使用 Elasticsearch 储存数据,然后使用  Kibana ( Elasticsearch 栈的一部分)构建自定义仪表板,以便可视化对你重要的数据。另外,你可以使用 Elasticsearch 聚合功能,依靠数据执行复杂的商业智能查询。

对于本教程的其余部分,会通过 Elasticsearch 的启动和运行过程指导你初步认识它,并展示一些基本的操作,比如:索引,搜索和修改数据。本教程的结束后,你将会对 Elasticsearch 是什么以及它的工作原理有了较深的认识。希望你能受到启发,既能使用它建立复杂的搜索应用程序又能从你的数据中发掘有用的东西。

基本概念(Basic Concepts)

有一些概念是Elasticsearch 的核心从一开始就理解这些概念将大大有助于以后的学习。

近实时(NRT)

Elasticsearch 是一个接近实时的搜索平台。这意味着从将文档索引的时间到变得可搜索的时间只有轻微的延迟(通常为1秒)。

集群(Cluster)

集群是一个或多个节点(服务器)的集合,它们联合起来保存所有的数据,并且可以在所有的节点上进行索引和搜索操作。集群由唯一的名称标识,默认是"elasticsearch"。由于一个节点仅仅可以属于一个集群,并根据集群名称加入集群。所以该名字很重要。

不要在不同的环境中使用一样的集群名字,否则可能会导致加入错误的集群。例如,你可以分别在开发,过渡,生产环境中使用集群名称, logging-dev , logging-stage 和 logging-prod  。

注意,只有一个节点的集群是有效和完美的。也可以拥有多个独立的集群,每个集群都有自己独特的集群名称。

节点(Node)

节点是一个单一的服务器,是集群的一部分,存储数据,并参与集群的索引和搜索。和集群一样,节点也是通过唯一的名字去区分,默认名字是一个随机的UUID(Universally Unique IDentifier),当服务器启动的时候就会设置到该节点。如果不想使用默认值,你也可以自定义节点的名称。名称对管理员来说十分重要,它可以帮助你区分出集群中的各个服务器和哪些节点相对应。

节点通过配置集群的名称,就可以加入到指定的集群。默认情况下,节点都加入一个叫  elasticsearch 的集群,这意味着如果你在网络中启动了大量的节点并且假如他们都能互相通讯的话,那么他们将会被自动的加入一个名字叫  elasticsearch 的集群。

索引(Index)

索引是具有某种相似特征的文档的集合。例如,客户数据索引,产品目录索引,以及订单数据索引。索引由名称(必须全部为小写)标识,此名称用于在对文档进行索引、搜索、更新和删除操作时使用。在单个集群中,您可以根据需要定义任意数量的索引。

类型(Type)

一个索引可以定义一个或多个类型。类型是索引的逻辑类别/分区,你怎么理解都行。通常,为具有一组公共字段的文档定义一种类型。例如,一个博客平台,假如将所有数据存储在单个索引中。在此索引中,可以定义用户数据类型,博客数据类型以及评论数据类型。

文档(document)

文档是可以被索引的基本单位。例如,用一个文档保存某个客户的数据,或者保存单个产品的数据,或者保存单个订单的数据。文档使用JSON表示。在索引/类型中可以存储大量文档。值得注意的是,尽管文档本质上是存放在索引中,但实际上是被索引/分配到索引中的一个类型中。

分片和副本(shards & replicas)

一个索引可能存储海量数据,有可能超过单个节点的硬盘容量。例如,某个索引存储了10亿个文档,占用1TB的硬盘空间,单个节点的硬盘有可能不足以存储那么大的数据量,就算可以存储下,但是可能会降低服务器处理搜索请求的速度。

为了解决这个问题, elasticsearch 提供了分片功能,即将索引细分。创建索引时,可以简单地定义所需的分片数。每个分片本身就具备索引的全部功能,可以存放在集群中的任何一个节点。

分片很重要,主要原因有两个:

  • 它允许您水平分割/缩放您的内容量

    手机在线人工冲值
    手机在线人工冲值

    说明:我不知道这个系统还能用到什么地方!他的运作方式是这样的,客户在其他地方比如掏宝购买了 你得卡,然后在你的网站进行冲值,你得有人登陆并看着后台,如果有人冲值,就会刷出记录,手工冲值完毕后,你得点击 [冲值完毕],客户的页面 就会返回 冲值信息!安装:上传所有文件,倒入(sql.txt)mysql数据库,使用myphpadminphplib 777phplib/sys.php 777phplib

    下载
  • 它允许你并行地分发操作到多个节点的分片上,从而可以提升性能或吞吐量。

 碎片分发的机制,以及它的文档如何汇总回到搜索请求中完全由Elasticsearch管理,并且对用户来说是透明的。

在网络/云环境中,任何时候都可能发生故障,分片会非常有用,并强烈建议使用故障转移机制,以防止分片/节点脱机或消失。为此, elasticsearch 允许您将索引的分片复制一份或多份,也就是所谓的复制分片,或简写为副本。

副本很重要,主要原因有两个:

  • 如果分片/节点出现故障,则可提供高可用性。因此,要注意,副本与其复制的原始/主分片不能分配在同一节点上。

  • 它允许您扩展搜索量/吞吐量,因为可以对所有副本并行执行搜索。

总而言之,每个索引可以分为多个分片。每个索引也可以被复制零次(意味着没有副本)或多次。一旦复制,每个索引将具有主分片(复制的原始分片)和副分片(主分片的副本)。可以在创建索引时根据索引定义碎片和副本的数量。创建索引后,您可以随时动态更改副本数,但不能更改事后的分片数。

默认情况下,每个索引都会被分配5个主分片和1一个复制分片,这意味着如果你的集群中有两个节点,你的索引将会有5个主分片和5个复制分片,总共有10个分片。

每个 elasticsearch 分片是一个 Lucene index ,一个 Lucene 索引中可以有很多的文档,截至 LUCENE-5843 ,最多2,147,483,519(= Integer.MAX_VALUE - 128) 个文档. 可以使用 _cat/shards api监视分片大小。

总结

1、为什么不用关系型数据库做搜索?因为用数据库来实现搜索,性能会很差,不能进行分词搜索。

2、什么是全文检索、倒排索引和Lucene?前人已经总结过了,请参考【手把手教你全文检索】Apache Lucene初探

3、Elasticsearch的特点

  • 可以分布式集群,对海量数据进行近实时的处理;

  • 对用户而言,开箱即用,非常简单。如果数据量不大,操作不会太复杂;

  • 具有关系型数据库没有的功能,比如全文检索,同义词处理,相关度排名,复杂数据分析,海量数据的近实时处理;

  • 基于lucene,隐藏了复杂性,提供简单易用的restful api接口、java api接口

4、elasticsearch的核心概念

  • Cluster:集群包含多个节点,每个节点属于哪个集群是通过配置来决定的(默认是elasticsearch)

  • Node:集群中的一个节点,节点默认会自动加入名叫"elasticsearch"的集群。一个elasticsearch服务就是一个节点,比如一台机器启动两个es服务,就有两个节点。

  • Index:索引,相当于mysql的数据库,包含一堆有相似结构的文档数据。

  • Type:类型,相当于mysql的表,index中的一个逻辑数据分类。

  • document:文档,相当于mysql表中的一行记录,是es中的最小数据单元。

  • shard:分片,单台机器无法存储大量数据,es可以将一个索引中的数据切分为多个shard,分布在多台服务器上存储。

  • replica:副本,为了防止宕机,shard丢失,所以最小的高可用配置,是2台服务器。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
俄罗斯Yandex引擎入口
俄罗斯Yandex引擎入口

2026年俄罗斯Yandex搜索引擎最新入口汇总,涵盖免登录、多语言支持、无广告视频播放及本地化服务等核心功能。阅读专题下面的文章了解更多详细内容。

75

2026.01.28

包子漫画在线官方入口大全
包子漫画在线官方入口大全

本合集汇总了包子漫画2026最新官方在线观看入口,涵盖备用域名、正版无广告链接及多端适配地址,助你畅享12700+高清漫画资源。阅读专题下面的文章了解更多详细内容。

17

2026.01.28

ao3中文版官网地址大全
ao3中文版官网地址大全

AO3最新中文版官网入口合集,汇总2026年主站及国内优化镜像链接,支持简体中文界面、无广告阅读与多设备同步。阅读专题下面的文章了解更多详细内容。

38

2026.01.28

php怎么写接口教程
php怎么写接口教程

本合集涵盖PHP接口开发基础、RESTful API设计、数据交互与安全处理等实用教程,助你快速掌握PHP接口编写技巧。阅读专题下面的文章了解更多详细内容。

1

2026.01.28

php中文乱码如何解决
php中文乱码如何解决

本文整理了php中文乱码如何解决及解决方法,阅读节专题下面的文章了解更多详细内容。

3

2026.01.28

Java 消息队列与异步架构实战
Java 消息队列与异步架构实战

本专题系统讲解 Java 在消息队列与异步系统架构中的核心应用,涵盖消息队列基本原理、Kafka 与 RabbitMQ 的使用场景对比、生产者与消费者模型、消息可靠性与顺序性保障、重复消费与幂等处理,以及在高并发系统中的异步解耦设计。通过实战案例,帮助学习者掌握 使用 Java 构建高吞吐、高可靠异步消息系统的完整思路。

8

2026.01.28

Python 自然语言处理(NLP)基础与实战
Python 自然语言处理(NLP)基础与实战

本专题系统讲解 Python 在自然语言处理(NLP)领域的基础方法与实战应用,涵盖文本预处理(分词、去停用词)、词性标注、命名实体识别、关键词提取、情感分析,以及常用 NLP 库(NLTK、spaCy)的核心用法。通过真实文本案例,帮助学习者掌握 使用 Python 进行文本分析与语言数据处理的完整流程,适用于内容分析、舆情监测与智能文本应用场景。

23

2026.01.27

拼多多赚钱的5种方法 拼多多赚钱的5种方法
拼多多赚钱的5种方法 拼多多赚钱的5种方法

在拼多多上赚钱主要可以通过无货源模式一件代发、精细化运营特色店铺、参与官方高流量活动、利用拼团机制社交裂变,以及成为多多进宝推广员这5种方法实现。核心策略在于通过低成本、高效率的供应链管理与营销,利用平台社交电商红利实现盈利。

122

2026.01.26

edge浏览器怎样设置主页 edge浏览器自定义设置教程
edge浏览器怎样设置主页 edge浏览器自定义设置教程

在Edge浏览器中设置主页,请依次点击右上角“...”图标 > 设置 > 开始、主页和新建标签页。在“Microsoft Edge 启动时”选择“打开以下页面”,点击“添加新页面”并输入网址。若要使用主页按钮,需在“外观”设置中开启“显示主页按钮”并设定网址。

52

2026.01.26

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
最新Python教程 从入门到精通
最新Python教程 从入门到精通

共4课时 | 22.3万人学习

Python 教程
Python 教程

共137课时 | 7.7万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号