千家信息网

elasticsearch分布式搜索怎么实现

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章主要讲解了"elasticsearch分布式搜索怎么实现",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"elasticsearch分布式搜索怎么
千家信息网最后更新 2026年11月01日elasticsearch分布式搜索怎么实现

这篇文章主要讲解了"elasticsearch分布式搜索怎么实现",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"elasticsearch分布式搜索怎么实现"吧!

elasticsearch 概括

(基于互联网)

Elasticsearch是一个基于lucene的、开源的、分布式的、RESTful的搜索引擎。Elasticsearch有如下特征:

1. 更快的执行搜索;
2. 安装简单;
3. 完全自由的搜索模式;
4. 可以简单地通过HTTP使用JSON索引数据;
5. 分布式,可对搜索集群;
6. 能够实时搜索;
7. 实现简单地多租户;
8. 等等。

很多时候我们使用Elasticsearch来代替lucene实现搜索,当然,代替的原因是因为其可实现搜索集群。

自由和面向文档的模式

搜索引擎的数据模型属于模式自由以及数据库是面向文档的,以目前#nosql的发展趋势来看,使用这种数据模型来构建应用程序已经被证明是非常高效的。

elasticsearch 的模型基于 JSON, 事实上,在近些年,它俨然已经成为数据呈现的一个标准,此外,通过JSON,可以非常简单的表示半结构化的数据,同样的,大多数编程语言都会优先支持JSON数据的解析.

模式映射(Schema Mapping)

elasticsearch是无模式的,你随便往里面扔一个JSON格式的文档,然后ES就可以自动的进行索引。输入的内容如果是数字或者是时间类型,ES也自动的检测出来,并做相应的处理。

但是,众所周知,搜索引擎是非常复杂的,索引文档中的字段是可以设置BOOST值来影响打分的,另外还可以使用不同的分析器(Analyzer)用来控制怎么分词,比如有些字段是需要进行分词的,但是有些则不一定,如此等等。elasticsearch允许你完全控制这些规则,最终将一个JSON文档映射到搜索引擎里面。并且可以按索引(Index)和按类型(Type)2种级别来进行设置.。

获取数据(GETting Some Data)

每个索引的文档都必须要有一个唯一标识(在类型级别),在很多时候这是非常有用的,比如你想更新或者删除某一个索引文档,或者只是想拿一条索引数据看看。获取数据真是简单的不能再简单了,你只需用告诉es指定文档的索引、类型、和id就可以拿回实际的索引文档了(就是你建索引的时候的JSON文档)。

搜索(Search)

处理查询只需要一个简单的请求,里面隐藏了很多复杂的es提供的基于分布式的操作。可以简单的使用 Lucene通用的语法,或者使用基于JSON格式QueryDSL(DSL:领域特定语言)来构造搜索各种请求(更加灵活,方便构造复杂查询)。

搜索可不仅仅就是查询就结束了,方面/层面(facets),高亮,自定义脚本等等都是支持的。

多租户(Multi Tenancy)

单个索引既然已经有了,那为什么还会需要不止一个索引呢,其实,有很多原因需要支持多索引,比如,对日志索引可以按周来分别存放,或者是对不同的索引进行不同的设置(比如,一个使用内存作为存储,一个使用文件系统来存储)。

当有了多个索引之后,我们就想要能够跨索引来进行搜索(或者其他操作)。

设置(Settings)

能够进行配置本身就是一把双刃剑,我们想要的是能够打开就能尽快运行,中间无需任何配置,并且当有需要的时候能够控制应用程序的几乎所有方面。

elasticsearch 从构建之初就这种理念,所以几乎所有事情都是可配和可插拔的,此外,每个索引(index)都有其独立的配置,用来覆盖主配置(master settings)。举例来说,一个索引可以配置为使用内存存储,10个分片和1个副本,而另外一个索引可以是使用文件系统存储,1个分片和10个副本。所有的索引级别(index)的设置都是可以在创建索引的时候通过YAML或者JSON格式来进行指定的。

分布式(Distributed)

elasticsearch的一个最主要的功能就是对分布式的支持,索引能够分拆为多个分片,每个分片可以有0个或者多个副本,集群中的每个数据节点,都可以承载一个或者多个分片,并且充当协调和处理各种操作分发到合适的分片上去。再平衡(Rebalancing)和路由(routing)这一切都是自动进行的。

时间之门(Gateway)

也许有一天,整个集群会崩溃(谁也无法保证因为什么原因),或者是因为特殊需要而进行关停,大多数情况,我们是需要让集群恢复到最后的一个状态的,并且让服务重新run起来 ,elasticsearch提供了一个叫做gateway的模块,允许你来做这件事情,你可以想想时间机器和搜索的结合。

集群的状态信息(包括事务日志)可以通过每个本地存储(默认模式)来重建,或共享存储(如NFS或者Amazon S3),当使用共享存储,集群状态信息会异步的复制过去。

此外,当使用共享存储来做持久化,索引信息可以完全的存放在内存里面,就算做整个集群的关闭再恢复也不会有问题。

集群(cluster)

集群中有多个节点,其中有一个为主节点,这个主节点是可以通过选举产生的,主从节点是对于集群内部来说的。es的一个概念就是去中心化,字面上理解就是无中心节点,这是对于集群外部来说的,因为从外部来看es集群,在逻辑上是个整体,你与任何一个节点的通信和与整个es集群通信是等价的。

索引分片(shards)

es可以把一个完整的索引分成多个分片,这样的好处是可以把一个大的索引拆分成多个,分布到不同的节点上。构成分布式搜索。分片的数量只能在索引创建前指定,并且索引创建后不能更改。

索引副本(replicas)

es可以设置多个索引的副本,副本的作用一是提高系统的容错性,当个某个节点某个分片损坏或丢失时可以从副本中恢复。二是提高es的查询效率,es会自动对搜索请求进行负载均衡。

数据重新分布(recovery)

es在有节点加入或退出时会根据机器的负载对索引分片进行重新分配,挂掉的节点重新启动时也会进行数据恢复。

数据源(river)

也是其它存储方式(如:数据库)同步数据到es的一个方法。它是以插件方式存在的一个es服务,通过读取river中的数据并把它索引到es中,官方的river有couchDB的,RabbitMQ的,Twitter的,Wikipedia的。

Transport

代表es内部节点或集群与客户端的交互方式,默认内部是使用tcp协议进行交互,同时它支持http协议(json格式)、thrift、servlet、memcached、zeroMQ等的传输协议(通过插件方式集成)。

感谢各位的阅读,以上就是"elasticsearch分布式搜索怎么实现"的内容了,经过本文的学习后,相信大家对elasticsearch分布式搜索怎么实现这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

索引 搜索 数据 集群 节点 分布式 文档 存储 多个 副本 就是 模式 时候 支持 配置 不同 引擎 搜索引擎 方式 格式 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 上海挚品互联网科技有限公司 互联网加科技 上海喔噻互联网科技有限公司 互联网科技工作委员会 美国互联网保险保险科技 互联网电商科技 互联网金融 科技金融 成都互联网科技公司 狮子座互联网科技有限公司 腾讯科技 互联网女皇 狮子座互联网科技培训 济南华为互联网科技产业总部基地 山东有哪些互联网科技公司 山东大美朱楼互联网科技有限公司 互联网硬科技公司 唐山双旺合互联网科技产业园 深圳互联网科技园地址 河南商务圈互联网科技有限公司 互联网科技自媒体灵感 科技美学互联网 艺术 互联网核心科技是什么 艾特科技互联网 北京大学互联网科技怎么样 中国互联网有什么科技含量 常德市电业局互联网科技部 35岁以上互联网科技行业 广州燕处互联网科技有限公司 普陀区互联网教育科技管理办法 兰石爱特工业互联网科技分公司 互联网科技大会大佬
0