分布式搜索引擎(三) ES同类对比及设计理念

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: ES同类对比及设计理念

ES和Lucene的区别

Lucene只支持java,ES支持多种语言

Lucene飞分布式,ES支持分布式

Lucene非分布式的,索引目录只能在项目本地,ES的索引库可以跨多个服务分区存储

Lucene使用非常复杂,ES屏蔽了Lucene的使用细节,操作更方便

单体/小项目使用lucene,大项目或者分布式项目使用ES

倒排索引的定义

倒排索引源于实际应用中根据属性的值来查找记录,这种索引表中的每一项都包括一个属性值和具有该属性值的各记录地址,由于不是由记录来确定属性值,而是由属性值来确定记录的位置,因此被称为倒排索引,带有倒排索引的文件我们称之为倒排索引文件

ElasticSearch与Solr对比

Solr利用zookeeper进行分布式管理,而ElasticSearch自身带有分布式协调管理功能

Solr支持更多格式的数据,而Elasticsearch仅支持json文件格式

Solr官方提供的功能更多,而Elasticsearch本身更注重核心功能,高级功能多有第三方插件提供

Solr在传统的搜索应用中表现好于ElasticSearch,但在处理实时搜索应用时效率明显低于ElasticSearch

ElasticSearch的设计理念

ElasticSearch设计的理念就是分布式搜索引擎,底层其实还是基于Lucene的

核心思想是在多台机器上启动多个es进程实例,组成一个es集群,然后会生成一个索引,索引可以拆分成多个shard,每个shard存储部分数据

同时这个Shard的数据还有多个备份,就是说每个shard都有一个primay Shard,负责写入数据,但是还有几个replica Shard,primary Shard写入数据之后,会将数据同步到其他几个Replica Shard上去

通过replica的方案,每个shard的数据都有多个备份,如果某个机器宕机了,还有别的数据副本在别的机器上,可以提供高可用性

es集群有多个节点,会自动选举一个节点为master节点,这个master节点其实就是做一些管理工作,比如维护索引元数据,负责切换primary Shard和replica shard身份之类的

es中存储数据的基本单元是索引

如果master节点宕机了,那么就会重新选举一个节点为master节点,如果是非master节点当寄了,那么就会由master节点,让那个宕机节点上的primary shard的身份转移到其他机器上的replica Shard,当宕机节点修复之后,重启之后,master节点就会控制将确实的replica shard分配过去,同步后续修改的数据,让集群重新恢复正常

es主从节点的情况和kafka有点区别在于,es的primaryShard和replicaShard都可用来进行读操作,但是只有primaryShard可以写入数据

相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
目录
相关文章
|
3月前
|
自然语言处理 搜索推荐 数据库
高性能分布式搜索引擎Elasticsearch详解
高性能分布式搜索引擎Elasticsearch详解
95 4
高性能分布式搜索引擎Elasticsearch详解
|
2月前
|
存储 数据采集 分布式计算
Hadoop-17 Flume 介绍与环境配置 实机云服务器测试 分布式日志信息收集 海量数据 实时采集引擎 Source Channel Sink 串行复制负载均衡
Hadoop-17 Flume 介绍与环境配置 实机云服务器测试 分布式日志信息收集 海量数据 实时采集引擎 Source Channel Sink 串行复制负载均衡
56 1
|
2月前
|
存储 缓存 数据处理
深度解析:Hologres分布式存储引擎设计原理及其优化策略
【10月更文挑战第9天】在大数据时代,数据的规模和复杂性不断增加,这对数据库系统提出了更高的要求。传统的单机数据库难以应对海量数据处理的需求,而分布式数据库通过水平扩展提供了更好的解决方案。阿里云推出的Hologres是一个实时交互式分析服务,它结合了OLAP(在线分析处理)与OLTP(在线事务处理)的优势,能够在大规模数据集上提供低延迟的数据查询能力。本文将深入探讨Hologres分布式存储引擎的设计原理,并介绍一些关键的优化策略。
141 0
|
5月前
|
负载均衡 监控 搜索推荐
面试题ES问题之Solr和Elasticsearch在分布式管理上如何解决
面试题ES问题之Solr和Elasticsearch在分布式管理上如何解决
43 1
|
7月前
|
存储 自然语言处理 搜索推荐
分布式搜索引擎ElasticSearch
Elasticsearch是一款强大的开源搜索引擎,用于快速搜索和数据分析。它在GitHub、电商搜索、百度搜索等场景中广泛应用。Elasticsearch是ELK(Elasticsearch、Logstash、Kibana)技术栈的核心,用于存储、搜索和分析数据。它基于Apache Lucene构建,提供分布式搜索能力。相比其他搜索引擎,如Solr,Elasticsearch更受欢迎。倒排索引是其高效搜索的关键,通过将词条与文档ID关联,实现快速模糊搜索,避免全表扫描。
283 12
|
6月前
|
存储 搜索推荐 Java
微服务SpringCloud ES分布式全文搜索引擎简介 下载安装及简单操作入门
微服务SpringCloud ES分布式全文搜索引擎简介 下载安装及简单操作入门
85 2
|
7月前
|
存储 搜索推荐 Java
Java远程连接本地开源分布式搜索引擎ElasticSearch
Java远程连接本地开源分布式搜索引擎ElasticSearch
|
2月前
|
NoSQL Java Redis
太惨痛: Redis 分布式锁 5个大坑,又大又深, 如何才能 避开 ?
Redis分布式锁在高并发场景下是重要的技术手段,但其实现过程中常遇到五大深坑:**原子性问题**、**连接耗尽问题**、**锁过期问题**、**锁失效问题**以及**锁分段问题**。这些问题不仅影响系统的稳定性和性能,还可能导致数据不一致。尼恩在实际项目中总结了这些坑,并提供了详细的解决方案,包括使用Lua脚本保证原子性、设置合理的锁过期时间和使用看门狗机制、以及通过锁分段提升性能。这些经验和技巧对面试和实际开发都有很大帮助,值得深入学习和实践。
太惨痛: Redis 分布式锁 5个大坑,又大又深, 如何才能 避开 ?
|
18天前
|
存储 NoSQL Java
使用lock4j-redis-template-spring-boot-starter实现redis分布式锁
通过使用 `lock4j-redis-template-spring-boot-starter`,我们可以轻松实现 Redis 分布式锁,从而解决分布式系统中多个实例并发访问共享资源的问题。合理配置和使用分布式锁,可以有效提高系统的稳定性和数据的一致性。希望本文对你在实际项目中使用 Redis 分布式锁有所帮助。
47 5
|
21天前
|
NoSQL Java 数据处理
基于Redis海量数据场景分布式ID架构实践
【11月更文挑战第30天】在现代分布式系统中,生成全局唯一的ID是一个常见且重要的需求。在微服务架构中,各个服务可能需要生成唯一标识符,如用户ID、订单ID等。传统的自增ID已经无法满足在集群环境下保持唯一性的要求,而分布式ID解决方案能够确保即使在多个实例间也能生成全局唯一的标识符。本文将深入探讨如何利用Redis实现分布式ID生成,并通过Java语言展示多个示例,同时分析每个实践方案的优缺点。
39 8
下一篇
DataWorks