人格分裂(交互问答)-小白想懂Elasticsearch

news/2025/2/1 11:26:37/

通过交互式追问了解一个中间件


? 啥是Elasticsearch

! 分布式搜索和分析引擎

? 为啥是分布式搜索,单体难道用不了吗

? 实际上是说这个东西可以分布式部署

! 单机可用但扩展性差,分布式通过分片、副本和负载均衡实现海量数据存储与高并发处理

? 提到集群,这里分布式到底是集群还是分布式

! Elasticsearch的分布式是通过集群实现的,分布式是设计理念,集群是实现方式(目标和手段)

? 那集群到底是什么,是一样状态的节点吗

! 不是的,实际上是很多不同节点相互联系形成一个集群(状态同步的逻辑整体)

? 明明是不一样的分片,为什么分片丢失还能恢复

! Minio: 数学,可以使用剩余分片推理出丢失分片的信息;而Elasticsearch是通过主副分片

! 也就是说对于Elasticsearch这种,如果主分片和副分片同时丢失,数据丢失;对于Minio,若分片丢失数超过纠错码容量阈值,永久丢失(就像4个分片,相当于四个变量,纠错码比作是两个方程,对于则由任意两个变量就可以解出剩下的变量)

! 那也就是说,对于这种集群部署,数据配合的实现方式是多样的,要根据需求来设定

? 进入正题,为什么Elasticsearch比正常的检索快

! 倒排索引: 输入关键词->在词典中定位词项(哈希或二分)->获取到倒排列表->返回匹配文档 O(1) ;分布式并行计算;列式存储+缓存...

? 啥叫列式存储,解释一下

? 也就是说Mysql这种关系型数据库是行式存储,Elasticsearch是列式存储吗

! Mysql只是行式存储( 专注于强一致的事务处理),es只是在特定情况下才采用列式存储存储,其实是行式(_source->实现CRUD)和列式(Doc Values->排序聚合)混合状态,并使用倒排索引加速全文搜索

? _source字段和Doc Values在es里代表了什么东西

! _source字段: 原始json文档(完整数据行);Doc Values: 单个字段的列数据行(分析引擎)

? 讲讲es怎么使用

! 安装->索引管理->数据操作->搜索聚合->高级功能 这里可以具体可以参照网上

 1. 安装:docker run -d -p 9200:9200 elasticsearch:8.5.1

 2. 创建索引:PUT /products { "mappings": { ... } }

 3. 插入数据:POST /products/_doc/1 { "title": "手机" }

 4. 搜索:GET /products/_search { "query": { "match": { "title": "手机" } } }

? 你提到的这些操作都是基于http请求实现的吗

! 对,主要通过RESTful Http Api

? 我要一个项目中(Spring Boot)集成es,需要做哪些工作

! 依赖引入->Bean配置(客户端)->CUDR(JSON数据)

 1. 引入依赖:elasticsearch-rest-high-level-client

 2. 配置客户端Bean:连接地址、认证信息

 3. 实现CRUD:通过RestHighLevelClient操作索引和数据。


http://www.ppmy.cn/news/1568411.html

相关文章

如何利用天赋实现最大化的价值输出

这种文章,以我现在的实力很难写出来。所以需要引用一些视频。 上92高校容易吗 如果基于天赋努力,非常容易。 如果不是这样,非常非常难。 高考失败人生完蛋?复读考上交大,进入社会才发现学历只是一张纸,98…

AI大模型开发原理篇-8:Transformer模型

近几年人工智能之所以能迅猛发展,主要是靠2个核心思想:注意力机制Attention Mechanism 和 Transformer模型。本次来浅谈下Transformer模型。 重要性 Transformer模型在自然语言处理领域具有极其重要的地位,为NLP带来了革命性的突破‌。可以…

深入理解 C# 与.NET 框架

.NET学习资料 .NET学习资料 .NET学习资料 一、引言 在现代软件开发领域,C# 与.NET 框架是构建 Windows、Web、移动及云应用的强大工具。C# 作为一种面向对象的编程语言,而.NET 框架则是一个综合性的开发平台,它们紧密结合,为开…

《苍穹外卖》项目学习记录-Day7缓存菜品

我们优先去读取缓存数据,如果有就直接使用,如果没有再去查询数据库,查出来之后再放到缓存里去。 微信小程序根据分类来展示菜品,所以每一个分类下边的菜品对应的就是一份缓存数据,这样的话当我们使用这个数据的时候&am…

Pyside6(PyQT5)的QSqlQueryModel的常用方法

QSqlQueryModel 是 PySide6 中一个用于执行 SQL 查询并处理查询结果的模型类。它可以方便地将查询结果展示在视图组件中,如 QTableView 或 QListView。以下是 QSqlQueryModel 的一些常用方法: 1. setQuery(query, dbNone) 参数: query: SQL 查询字符串…

2025数学建模美赛|D题成品论文

通往更美好城市的路线图 摘要 本研究旨在通过改善巴尔的摩市的交通系统来提升居民的生活质量,分析了三种关键交通项目:大桥修复、公交系统优化和步行网络完善,并评估了它们对城市交通流动性、环境影响和居民满意度的综合影响。通过构建交通…

用 Python 实现近实时闪电数据可视化

我们有各种工具和方法来测量闪电的位置、时间和形状。在本文中,我将简要介绍不同检测方法的工作原理。在第二部分,我还将介绍一段 Python 代码,向您展示如何实时可视化闪电数据。这些数据来自 MTG-LI 的预发布版本,MTG-LI 是第三代…

C++并发编程指南04

文章目录 共享数据的问题3.1.1 条件竞争双链表的例子条件竞争示例恶性条件竞争的特点 3.1.2 避免恶性条件竞争1. 使用互斥量保护共享数据结构2. 无锁编程3. 软件事务内存(STM) 总结互斥量与共享数据保护3.2.1 互斥量使用互斥量保护共享数据示例代码&…