【面试篇】Es
基础概念类
问题:请简要介绍 Elasticsearch 是什么,它的主要特点有哪些?
答案:Elasticsearch 是一个基于 Lucene 库的开源分布式搜索引擎和分析引擎。它能对海量数据进行实时搜索与分析,被广泛应用于日志分析、全文搜索、监控指标分析等场景。其主要特点包括:
分布式架构:可轻松扩展到多个节点,实现水平扩展,以处理大规模数据和高并发请求。
实时性:数据写入后能近乎实时地被搜索到,满足对数据实时性要求较高的应用场景。
灵活的文档模型:使用 JSON 格式存储和处理数据,允许动态定义数据结构,适应各种类型的数据。
强大的搜索功能:支持全文搜索、模糊搜索、聚合分析等多种搜索方式,可对数据进行复杂的查询和分析。
问题:Elasticsearch 中的索引、文档和类型分别是什么含义,它们之间有什么关系?
答案:
索引:是一个存储关联数据的逻辑空间,类似于关系型数据库中的数据库,它包含了多个文档。
文档:是 Elasticsearch 中最基本的数据单元,相当于关系型数据库中的一行记录,以 JSON 格式存储,包含具体的数据字段和值。
类型:在早期版本中,一个索引可以包含多种类型的文档,用于对不同结构的文档进行分类。但从 Elasticsearch 7.x 版本开始,逐渐弱化类型的概念,一个索引只允许存在一个默认类型(_doc),到 8.x 版本后不再支持多类型。
关系:一个索引可以包含一个或多个类型(早期版本),每个类型下包含多个文档,文档存储在对应的索引的类型中。
索引与文档操作类
问题:在 Elasticsearch 中,怎样创建一个索引,并且向索引中插入文档?
答案:可以使用 Elasticsearch 提供的相关工具或客户端接口来操作。创建索引时,需要指定索引名称,并可以设置一些参数,比如分片数量、副本数量,以及定义数据字段的映射关系,确定每个字段的数据类型等。插入文档时,要指定索引名和文档所属的类型(新版本一般是默认类型 _doc ),然后提供以 JSON 格式表示的文档内容,包含具体的字段和对应的值。
问题:Elasticsearch 中的文档更新和删除是如何实现的,有什么需要注意的地方?
答案:
更新文档:有两种常见方式。一种是通过专门的更新操作,直接指定要更新的文档 ID 和需要修改的字段及新值。另一种是先获取文档内容,在本地修改后,再将整个文档重新索引到 Elasticsearch 中。
删除文档:通过指定索引和文档 ID 来执行删除操作。
需要注意的是,删除操作实际上是将文档标记为已删除,不会立即从磁盘上物理删除,而是在后续的段合并等过程中才会真正清理。对于更新操作,要考虑并发情况,避免数据不一致。同时,更新操作可能会导致索引的重建,影响性能。
分布式原理类
问题:Elasticsearch 是如何实现分布式存储和搜索的?
答案:
分布式存储:Elasticsearch 将索引划分成多个分片,每个分片还可以有多个副本。分片会分布在不同的节点上,数据依据一定的算法分散存储在各个分片中。写入数据时,先写入主分片,再同步到副本分片。
分布式搜索:当接收到搜索请求,请求会先到协调节点,协调节点将请求转发到包含相关分片的节点。这些节点并行执行搜索,然后把结果返回给协调节点,协调节点合并、排序结果后返回给客户端,实现对大规模数据的快速搜索。
问题:Elasticsearch 中的分片和副本有什么作用,如何合理设置分片数和副本数?
答案:
分片的作用:把索引数据分割成较小部分,分布在不同节点,实现数据水平扩展,提升存储和处理能力,还能并行处理搜索请求,加快搜索速度。
副本的作用:提供数据冗余,保障数据高可用性,主分片所在节点故障时,副本分片能接替工作。同时,副本分片可处理读请求,分担主分片负载,提高搜索性能。
合理设置分片数和副本数:分片数要依据数据量大小和未来增长预期来确定,一般建议每个分片大小不超 50GB,数据量小设置过多分片会增加管理开销和性能损耗。副本数根据对数据可用性和性能的需求决定,增加副本数可提升读性能和可用性,但会占用更多磁盘空间和网络带宽,通常设置 1 到 3 个副本较为合适。
性能优化类
问题:在 Elasticsearch 中,有哪些常见的性能优化方法?
答案:
合理设计索引结构:包括选择合适的字段类型,避免过多的字段和复杂的嵌套结构,减少不必要的字段映射。
优化分片和副本设置:根据数据量和访问模式,合理设置分片数和副本数,避免分片过多或过少。
使用合适的查询语句:避免复杂的全表扫描查询,尽量使用过滤器、聚合等高效的查询方式,减少返回的数据量。
定期进行索引优化:如执行段合并操作,减少索引文件数量,提高查询性能。
硬件资源优化:确保服务器有足够的内存、CPU 和磁盘 I/O 性能,合理分配资源给 Elasticsearch 进程。
问题:Elasticsearch 中的慢查询是如何定位和优化的?
答案:可以通过开启 Elasticsearch 的慢查询日志功能,记录执行时间较长的查询语句。然后分析慢查询日志,查看具体的查询语句、执行时间、涉及的索引和分片等信息。优化方面,可以检查查询语句是否合理,是否可以添加合适的索引来加快查询速度,比如对经常用于过滤或排序的字段创建索引。还可以调整查询的分页参数,避免一次性获取过多数据导致查询缓慢等。
相关文章:
【面试篇】Es
基础概念类 问题:请简要介绍 Elasticsearch 是什么,它的主要特点有哪些? 答案:Elasticsearch 是一个基于 Lucene 库的开源分布式搜索引擎和分析引擎。它能对海量数据进行实时搜索与分析,被广泛应用于日志分析、全文搜…...
KisFlow-Golang流式实时计算案例(四)-KisFlow在消息队列MQ中的应用
Golang框架实战-KisFlow流式计算框架专栏 Golang框架实战-KisFlow流式计算框架(1)-概述 Golang框架实战-KisFlow流式计算框架(2)-项目构建/基础模块-(上) Golang框架实战-KisFlow流式计算框架(3)-项目构建/基础模块-(下) Golang框架实战-KisFlow流式计算框架(4)-数据流 Golang框…...
leetcode:1582. 二进制矩阵中的特殊位置(python3解法)
难度:简单 给定一个 m x n 的二进制矩阵 mat,返回矩阵 mat 中特殊位置的数量。 如果位置 (i, j) 满足 mat[i][j] 1 并且行 i 与列 j 中的所有其他元素都是 0(行和列的下标从 0 开始计数),那么它被称为 特殊 位置。 示…...
大型语言模型的智能本质是什么
大型语言模型的智能本质是什么 基于海量数据的统计模式识别与生成系统,数据驱动的语言模拟系统 ,其价值在于高效处理文本任务(如写作、翻译、代码生成),而非真正的理解与创造 大型语言模型(如GPT-4、Claude等)的智能本质可概括为基于海量数据的统计模式识别与生成系统,…...
linux_sysctl_fs_file_nr监控项
在 Linux 系统中,/proc/sys/fs/file-nr 文件提供了当前系统打开文件句柄的信息。如果监控到文件打开数较高,可能会影响系统性能,甚至导致无法打开新文件(达到文件句柄上限)。以下是分析和解决该问题的步骤:…...
Cline – OpenRouter 排名第一的CLI 和 编辑器 的 AI 助手
Cline – OpenRouter 排名第一的CLI 和 编辑器 的 AI 助手,Cline 官网:https://github.com/cline/cline Star 37.8k ps,OpenRouter的网址是:OpenRouter ,这个排名第一,据我观察,是DeepSeek v3…...
Mock.js虚拟接口
Vue3中使用Mock.js虚拟接口数据 一、创建项目 pnpm创建vite的项目,通过 PNPM来简化依赖管理。若还没有安装 PNPM,可以通过 npm来安装: 安装 PNPM npm install -g pnpm//使用国内镜像加速pnpm add -g pnpmlatestpnpm config set registry http://regis…...
2025年嵌入式大厂春招高频面试真题及解析
以下是 2025 年嵌入式大厂春招高频面试真题及解析,结合真题分类和核心知识点整理: 一、C/C++编程基础 1.1 指针与内存 野指针的成因及避免方法(未初始化、释放后未置空) malloc与calloc的区别(后者自动初始化为0) 指针与数组的区别(内存分配方…...
LoRa模块通信距离优化:如何实现低功耗覆盖30公里无线传输要求
在物联网(IoT)快速发展的今天,LoRa(Long Range)技术作为一种基于扩频调制的远距离无线通信技术,因其远距离通信、低功耗和强抗干扰能力等优势,在农业监测、城市智能管理、环境监测等多个领域得到…...
OpenCV 从入门到精通(day_05)
1. 模板匹配 1.1 什么是模板匹配 模板匹配就是用模板图(通常是一个小图)在目标图像(通常是一个比模板图大的图片)中不断的滑动比较,通过某种比较方法来判断是否匹配成功。 1.2 匹配方法 rescv2.matchTemplate(image, …...
Linux操作系统与冯·诺依曼体系结构详解
一、冯诺依曼体系结构 1. 基本概念与历史背景 冯诺依曼体系结构是由数学家约翰冯诺依曼于1945年提出的计算机设计方案,也称为"存储程序计算机"。这一设计奠定了现代计算机的基础架构,至今仍是大多数计算机系统的核心设计理念。 2. 冯诺依曼体…...
OpenRouter开源的AI大模型路由工具,统一API调用
简介 OpenRouter是一个开源的路由工具,它可以绕过限制调用GPT、Claude等国外模型。以下是对它的详细介绍: 一、主要功能 OpenRouter专注于将用户请求智能路由到不同的AI模型,并提供统一的访问接口。它就像一个“路由器”,能…...
qt tcpsocket编程遇到的并发问题
1. 单个socket中接收消息的方法要使用局部变量而非全局,避免消息频发时产生脏数据 优化后的关键代码 recieveInfo() 方法通过返回内部处理后的 msg 进行传递if (data.indexOf("0103") -1) { 这里增加了判断, 对数据(非注册和心跳࿰…...
zabbix监控网站(nginx、redis、mysql)
目录 前提准备: zabbix-server主机配置: 1. 安装数据库 nginx主机配置: 1. 安装nginx redis主机配置: 1. 安装redis mysql主机配置: 1. 安装数据库 zabbix-server: 1. 安装zabbix 2. 编辑配置文…...
蓝桥杯冲刺
例题1:握手问题 方法1:数学推理(简单粗暴) 方法2:用代码实现方法1 #include<iostream> using namespace std; int main() {int result 0;for (int i 1; i < 49; i){for (int j i 1; j < 50; j){//第i个人与第j个…...
文心一言与 DeepSeek 的竞争分析:技术先发优势为何未能转化为市场主导地位?
目录 引言 第一部分:技术路径的差异——算法创新与工程优化的博弈 1.1 文心一言的技术积累与局限性 1.1.1 早期技术优势 1.1.2 技术瓶颈与局限性 1.2 DeepSeek 的技术突破 1.2.1 算法革命与工程创新 1.2.2 工程成本与效率优势 第二部分:生态策略…...
Spring Security(maven项目) 3.1.0
前言: 通过实践而发现真理,又通过实践而证实真理和发展真理。从感性认识而能动地发展到理性认识,又从理性认识而能动地指导革命实践,改造主观世界和客观世界。实践、认识、再实践、再认识,这种形式,循环往…...
合并两个有序数组(Java实现)
给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。 请你 合并 nums2 到 nums1 中,使合并后的数组同样按 非递减顺序 排列。 注意:最终,合并后数组…...
Tree - Shaking
Vue 3 的 Tree - Shaking 技术详解 Tree - Shaking 是一种在打包时移除未使用代码的优化技术,在 Vue 3 中,Tree - Shaking 发挥了重要作用,有效减少了打包后的代码体积,提高了应用的加载性能。以下是对 Vue 3 中 Tree - Shaking …...
C# 从代码创建选型卡+表格
private int tabNum 1; private int sensorNum 5; private void InitializeUI() {// 创建右侧容器面板Panel rightPanel new Panel{Dock DockStyle.Right,Width 300,BackColor SystemColors.ControlDark,Parent this};// 根据防区数量创建内容if (tabNum &g…...
OpenCV 从入门到精通(day_02)
1. 边缘填充 为什么要填充边缘呢?我们以下图为例: 可以看到,左图在逆时针旋转45度之后原图的四个顶点在右图中已经看不到了,同时,右图的四个顶点区域其实是什么都没有的,因此我们需要对空出来的区域进行一个…...
VTK的两种显示刷新方式
在类中先声明vtk的显示对象 vtkRenderer out_render; vtkVertexGlyphFilter glyphFilter; vtkPolyDataMapper mapper; // 新建制图器 vtkActor actor; // 新建角色 然后在init中先初始化一下: out_rend…...
Ceph异地数据同步之-RBD异地同步复制(上)
#作者:闫乾苓 文章目录 前言基于快照的模式(Snapshot-based Mode)工作原理单向同步配置步骤单向同步复制测试双向同步配置步骤双向同步复制测试 前言 Ceph的RBD(RADOS Block Device)支持在两个Ceph集群之间进行异步镜…...
【C++】STL库_stack_queue 的模拟实现
栈(Stack)、队列(Queue)是C STL中的经典容器适配器 容器适配器特性 不是独立容器,依赖底层容器(deque/vector/list)通过限制基础容器接口实现特定访问模式不支持迭代器操作(无法遍历…...
前端对接下载文件接口、对接dart app
嵌套在dart app里面的前端项目 1.前端调下载接口 ->后端返回 application/pdf格式的文件 ->前端将pdf处理为blob ->blob转base64 ->调用dart app的 sdk saveFile ->保存成功 async download() {try {// 调用封装的 downloadEContract 方法获取 Blob 数据const …...
一周学会Pandas2 Python数据处理与分析-编写Pandas2 HelloWord项目
锋哥原创的Pandas2 Python数据处理与分析 视频教程: 2025版 Pandas2 Python数据处理与分析 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili 我们首先准备一个excel文件,用来演示pandas操作数据集(数据的集合)。excel文件属于数据集的一种…...
【易订货-注册/登录安全分析报告】
前言 由于网站注册入口容易被机器执行自动化程序攻击,存在如下风险: 暴力破解密码,造成用户信息泄露,不符合国家等级保护的要求。短信盗刷带来的拒绝服务风险 ,造成用户无法登陆、注册,大量收到垃圾短信的…...
AI赋能股票:流通股本与总股本:定义、区别及投资意义解析
一、基本定义 总股本(Total Shares Outstanding) 指一家公司已发行的所有股票数量,包括流通股和非流通股(如限售股、员工持股计划股票等)。总股本反映公司的整体股权结构,是计算市值(总股本 股…...
如何在Windows上找到Python安装路径?两种方法快速定位
原文:如何在Windows上找到Python安装路径?两种方法快速定位 | w3cschool笔记 在 Windows 系统上找到 Python 的安装路径对于设置环境变量或排查问题非常重要。本文将介绍两种方法,帮助你找到 Python 的安装路径:一种是通过命令提…...
第五课:高清修复和放大算法
文章目录 Part.01 高清修复(Hi-Res Fix)Part.02 SD放大(SD Upscale)Part.03 附加功能放大Part.01 高清修复(Hi-Res Fix) 文生图中的高清修复/高分辨率修复/超分辨率修复先低分辨率抽卡,再高分辨率修复。不能突破显存限制放大重绘幅度安全范围是0.3-0.5,如果想让AI更有想象力0…...
