分布式搜索技术elasticsearch概念篇

news2024/9/25 21:27:22

文章目录

  • 一、分布式搜索技术
  • 二、elasticsearch
    • 2.1 初识elasticsearch
    • 2.2 正向索引和倒排索引
      • 2.2.1 介绍
      • 2.2.2 优缺点
    • 2.3 elasticsearch和mysql的对比

一、分布式搜索技术

  分布式搜索技术是一种基于分布式计算的搜索引擎技术,它使用多台计算机协同工作来处理大规模的数据和复杂的搜索请求。

  在传统的搜索引擎中,所有的搜索请求和数据都存储在单一的服务器上,当用户发起搜索请求时,服务器需要处理所有的请求并返回结果,这样会导致服务器的负载非常大,并且不够灵活和可扩展。而在分布式搜索技术中,数据被分散存储在多个计算机上,当用户发起搜索请求时,这些计算机可以协同工作来处理请求,使得搜索引擎的性能得到了显著的提升。

  分布式搜索技术的实现需要解决一些技术挑战,比如如何分配任务、如何协调不同节点之间的数据交换、如何保证数据的一致性等等。常用的技术包括分布式索引、分布式缓存、分布式排序、分布式计算等。

  分布式搜索技术广泛应用于各种大规模的搜索场景,比如互联网搜索、电子商务搜索、企业内部搜索等。它能够大大提高搜索引擎的性能和可扩展性,使得搜索引擎能够处理更加复杂和多样化的搜索请求。

二、elasticsearch

2.1 初识elasticsearch

  Elasticsearch是一个基于Lucene搜索引擎的分布式搜索和分析引擎,它是一个开源的全文搜索和分析引擎,可以用来搜索、分析和存储各种类型的数据,包括结构化、非结构化和地理空间数据。
在这里插入图片描述

  Elasticsearch具有高可用性、可伸缩性和容错性,它可以通过水平扩展来实现高吞吐量和低延迟的搜索和分析。它支持实时搜索、数据聚合和分析、地理空间搜索、自动完成和建议等功能。同时,它也可以与各种数据源和第三方工具集成,如Logstash、Kibana、Beats等。

  Elasticsearch的工作原理是将数据分散在不同的节点上,每个节点负责存储和处理一部分数据。它使用分片和复制机制来提高可用性和可靠性,同时支持自动故障检测和自动故障转移。

  Elasticsearch的应用场景非常广泛,包括企业搜索、电子商务、日志分析、安全分析、金融分析等。它可以帮助企业快速地搜索和分析大量数据,发现数据中的模式和关系,从而支持业务决策和优化。

2.2 正向索引和倒排索引

2.2.1 介绍

正向索引:

  正向索引是将文本内容按照文档为单位进行索引,每个文档对应一个索引项,索引项包含了该文档的所有关键词和它们在文档中的位置。

  正向索引适用于基于文档的查询。在正向索引中,每个文档对应一个索引项,索引项包含了该文档的所有关键词和它们在文档中的位置。当用户查询时,搜索引擎可以根据正向索引快速找到匹配的文档,从而返回相应的搜索结果。正向索引的优点是速度快,适合处理基于文档的简单查询,例如,当用户输入一个特定的文档标题或文本内容时,搜索引擎可以根据正向索引快速找到匹配的文档。

倒排索引:

  倒排索引则是将关键词为单位进行索引,每个关键词对应一个索引项,索引项包含了该关键词出现在哪些文档中以及在每个文档中的位置。

  倒排索引适用于基于关键词的查询。在倒排索引中,每个关键词对应一个索引项,索引项包含了该关键词出现在哪些文档中以及在每个文档中的位置。当用户查询时,搜索引擎可以根据倒排索引快速找到包含关键词的文档,并且可以根据关键词的相关性进行排序和过滤,从而返回相应的搜索结果。倒排索引的优点是能够高效地处理复杂的查询,适合处理基于关键词的全文搜索和分析。

2.2.2 优缺点

正向索引

优点:

  • 适用于基于文档的查询,查询速度快。
  • 构建索引速度相对较快。
  • 需要的存储空间相对较少。

缺点:

  • 无法进行复杂的文本搜索和分析,只适用于简单的关键词匹配。
  • 无法对搜索结果进行排序和过滤。
  • 不支持模糊查询、近义词和语义查询等高级搜索功能。

倒排索引

优点:

  • 适用于基于关键词的查询,支持高级搜索功能。
  • 可以根据关键词的相关性进行排序和过滤。
  • 支持模糊查询、近义词和语义查询等高级搜索功能。

缺点:

  • 构建索引速度相对较慢,需要较大的存储空间。
  • 在查询时需要对所有关键词进行检索,查询速度较慢。

  在实际应用中,正向索引和倒排索引通常会结合使用,以充分利用它们各自的优点。例如,搜索引擎可以使用倒排索引快速定位到包含关键词的文档,然后再使用正向索引快速定位到文档的具体位置,从而提高搜索效率和用户体验。同时,搜索引擎还可以对正向索引和倒排索引进行优化,以提高索引的构建速度和查询效率,从而更好地满足用户的查询需求。

2.3 elasticsearch和mysql的对比

  Elasticsearch和MySQL是两个不同的数据库管理系统,它们的概念和应用场景有一定的区别。

Elasticsearch和MySQL的对比:

  1. 数据类型和数据处理方式: Elasticsearch可以存储和处理各种类型的数据,包括结构化和非结构化数据,如JSON、XML、文本、日志、地理位置等。而MySQL主要是针对结构化数据的存储和处理。
  2. 查询语言和查询方式: Elasticsearch支持基于HTTP/REST协议的查询,也支持Lucene查询语法、DSL查询语法和聚合查询等高级搜索功能。而MySQL使用SQL语言进行查询,支持复杂的关系型查询和连接查询。
  3. 索引和分片: Elasticsearch支持分布式索引和分片,可以在多台服务器上存储和处理大规模数据,并且能够自动进行数据分布和负载均衡。MySQL也可以在多台服务器上部署和扩展,但需要手动进行分区和负载均衡。
  4. 高可用性和数据复制: Elasticsearch具有高可用性和数据复制的能力,支持多个节点的数据备份和自动故障转移,保证了数据的安全和可靠性。MySQL也支持数据复制和高可用性,但需要手动配置和管理。
  5. 扩展性和性能: Elasticsearch可以通过添加节点和分片来扩展性能,同时支持缓存和优化查询来提高性能。MySQL也可以通过添加节点和优化查询来提高性能,但需要手动进行配置和管理。

  Elasticsearch和MySQL虽然是两个不同的数据库管理系统,但是它们一些概念也十分相似。

含义类似的关键词:

MySQLElasticsearch说明
TableIndex索引(index),就是文档的集合,类似数据库的表(table)
RowDocument文档(Document),就是一条条的数据,类似数据库中的行(Row),文档都是JSON格式
ColumnField字段(Field),就是JSON文档中的字段,类似数据库中的列(Column)
SchemaMappingMapping(映射)是索引中文档的约束,例如字段类型约束。类似数据库的表结构(Schema)
SQLDSLDSL是elasticsearch提供的JSON风格的请求语句,用来操作elasticsearch,实现CRUD

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/439289.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ElementUI登陆表单中常用的标签属性

ElementUI官网 为登陆框添加一个边角弧度 <style> .className{/*设置div边边框角的弧度*/border-radius: 10px; } </style><el–input>标签常用属性 <!--使用prefix属性添加一个前缀图标--> <el-input prefix-icon"el-icon-user-solid"&g…

深度学习第J6周:ResNeXt-50实战解析

目录 一、模型结构介绍 二、前期准备 三、模型 三、训练运行 3.1训练 3.2指定图片进行预测 &#x1f368; 本文为[&#x1f517;365天深度学习训练营]内部限免文章&#xff08;版权归 *K同学啊* 所有&#xff09; &#x1f356; 作者&#xff1a;[K同学啊] &#x1f4cc; …

大数据技术之集群数据迁移

在大数据集群数据迁移的项目中涉及到很多技术细节&#xff0c;本博客记录了迁移的大致的操作步骤。 迁移借用Hadoop自带的插件&#xff1a;distcp。 一、Hadoop集群数据迁移 **DistCp&#xff08;分布式拷贝&#xff09;**是用于大规模集群内部和集群之间拷贝的工具。它使用M…

Meson构建系统的使用

一、前言 Meson 是用于自动化构建的自由软件&#xff0c;使用Python语言编写&#xff0c;在 Apache 许可证 2.0版本下发布&#xff0c;主要目标是为了让开发者节约用于配置构建系统的时间。 特点如下&#xff1a; 多平台支持&#xff0c;包括 GNU/Linux、Windows、MacOS、GCC、…

A_A01_008 STM32F103系列标准库移植经验分享

A_A01_008 STM32F103系列标准库移植经验分享 一、所需材料二、移植步骤三、注意事项四、参考资料与友情链接 一、所需材料 1.MDK开发环境 此处版本V5.15 2.相关启动文件 此处用野火点灯例程 因为启动文件完整 方便更换 其它工程没有的可以直接复制这些启动文件过去 3.相关开…

Java版工程管理系统源代码-软件自主研发,工程行业适用

Java版工程项目管理系统 Spring CloudSpring BootMybatisVueElementUI前后端分离 功能清单如下&#xff1a; 首页 工作台&#xff1a;待办工作、消息通知、预警信息&#xff0c;点击可进入相应的列表 项目进度图表&#xff1a;选择&#xff08;总体或单个&#xff09;项目显示…

8年测开年薪30W,为什么从开发转型为测试?谈谈这些年的心路历程……

谈谈我的以前&#xff0c;从毕业以来从事过两个多月的Oracle开发后转型为软件测试&#xff0c;到现在已近过去8年成长为一个测试开发工程师&#xff0c;总结一下之间的心路历程&#xff0c;希望能给徘徊在开发和测试之前的同学一点小小参考。 一、测试之路伏笔 上学偷懒&#…

EGO-Link FPGA智慧教育社区介绍:用 leetcode 的方式练习 verilog 语言

文章目录 介绍FPGA 语法例1&#xff1a;P1203 1输入1输出例2&#xff1a;P1204 3输入4输出例3&#xff1a;P1207 P1208 P1205 与或非门例4&#xff1a;P1200 半加器例5&#xff1a;P1201 4位二进制转余3循环码例6&#xff1a;P1215 2选1多路选择器例7&#xff1a;P1236 D触发器…

【C语言】浅涉结构体(声明、定义、类型、定义及初始化、成员访问及传参)

简单不先于复杂&#xff0c;而是在复杂之后。 目录 1. 结构体的声明 1.1 结构体的基础知识 1.2 结构的声明 1.3 结构成员的类型 1.4 结构体变量的定义和初始化 2. 结构体成员的访问 3. 结构体传参 1. 结构体的声明 1.1 结构体的基础知识 结构是一些值的集合&…

探索Apache Hudi核心概念 (4) - Clustering

Clustering是Hudi在0.7.0版本引入的一项特性&#xff0c;用于优化文件布局&#xff0c;提升读写性能&#xff0c;现在它已经成为Hudi的一项重要性能优化手段。本文我们会通过Notebook介绍并演示Clustering的运行机制&#xff0c;帮助您理解其工作原理和相关配置。 1. 运行 Not…

RocketMQ 多级存储设计与实现

作者&#xff1a;张森泽 随着 RocketMQ 5.1.0 的正式发布&#xff0c;多级存储作为 RocketMQ 一个新的独立模块到达了 Technical Preview 里程碑&#xff1a;允许用户将消息从本地磁盘卸载到其他更便宜的存储介质&#xff0c;可以用较低的成本延长消息保留时间。本文详细介绍 …

记录贴:EasyPoi word导出问题一览

项目场景&#xff1a; EasyPoi word导出 问题描述1 easypoi 模板导出 我直接在map的value输入空格或"",出来的是{{,两个左花括号,咋解决 解决方案&#xff1a; exportMap.put("key", "\u00A0"); //空格前端效果&#xff1a; 其他无效解决方案…

Redis安装配置操作记录

Redis 官网&#xff1a;https://redis.io/ 中文文档&#xff1a;https://www.redis.com.cn/documentation.html 在线命令参考&#xff1a;http://doc.redisfans.com 一&#xff0c;Redis下载安装与配置 下载网站&#xff0c;可下载安装包然后安装或可使用brew来安装Redis&#…

LeetCode——前K个高频单词

692. 前K个高频单词 给定一个单词列表 words 和一个整数 k &#xff0c;返回前 k 个出现次数最多的单词。 返回的答案应该按单词出现频率由高到低排序。如果不同的单词有相同出现频率&#xff0c; 按字典顺序 排序。 示例 1&#xff1a; 输入: words [“i”, “love”, “le…

太阳能电池测试解决方案NS-9001

前言 太阳能行业的快速发展提高了对太阳能电池测试和精确测量解决方案要求&#xff0c;伴随着太阳能电池尺寸大小质量的提升&#xff0c;充电电池测试必须更多的电流和更高输出功率水准&#xff0c;这就更加需要灵活多变的测试方案支持。 现阶段&#xff0c;太阳能电池测试 解…

Java学习星球,Java学习路线

目录 一、Java学习路线二、学习计划三、为何会有Java学习星球&#xff1f;四、加入星球后&#xff0c;你可以得到什么&#xff1f;五、如何加入Java学习星球&#xff1f;六、打卡挑战 大家好&#xff0c;我是哪吒&#xff0c;一个靠着热情攀登至C站巅峰的中年男子&#xff0c;C…

【历史上的今天】3 月 20 日:cURL 二十五周年;Docker 发布;思科收购 Linksys

整理 | 王启隆 透过「历史上的今天」&#xff0c;从过去看未来&#xff0c;从现在亦可以改变未来。 今天是 2023 年 3 月 20 日&#xff0c;在 1999 年的今天&#xff0c;人类首次成功乘热气球环球飞行。在 24 年的今天&#xff0c;瑞士人皮尔卡、英国人琼斯经过近 20 天的飞行…

JavaWeb—HTTP协议

目录 1.HTTP协议 1.1 HTTP-概述 1.1.1 介绍 2.1.2 特点 1.2 HTTP-请求协议 HTTP-请求数据格式 GET请求和POST请求的区别&#xff1a; 1.3 HTTP-响应协议 1.3.1 格式介绍 1.3.2 响应状态码 常见响应状态码 1.4 HTTP-协议解析 1.HTTP协议 1.1 HTTP-概述 1.1.1 介绍 HTT…

ModuleNotFoundError: No module named ‘cuda‘、‘tensorrt‘

1、 ModuleNotFoundError: No module named ‘cuda’ python -m pip install --upgrade pip pip install cuda-python2、 ModuleNotFoundError: No module named ‘tensorrt’ 2.1 依赖库 先安装两个TensorRT的依赖库 python -m pip install --upgrade pip pip install nvi…

openstack compute schedulers

https://docs.openstack.org/nova/latest/admin/scheduling.html 在默认的配置中&#xff0c;调度器将考虑如下的几个方面&#xff1a; 请求的是Availability Zonenova-compute服务在目标节点上是启用的满足实例类型的extra specs&#xff08;ComputeCapabilityesFilter&#…