常见面试题25

简介: Elasticsearch通过倒排索引实现高效全文搜索,先分词构建词条,再以词条查文档。支持索引、映射、文档存储与搜索,擅长海量非结构化数据的分析与检索,不同于MySQL的事务处理,适用于高并发查询场景。

elasticsearch倒排索引

创建倒排索引是对正向索引的一种特殊处理和应用,流程如下:

  • 将每一个文档的数据利用分词算法根据语义拆分,得到一个个词条
  • 创建表,每行数据包括词条、词条所在文档id、位置、出现次数等信息
  • 因为词条唯一性,可以给词条创建正向索引

倒排索引,是先找到用户要搜索的词条,根据词条得到保护词条的文档的id,然后根据id获取文档。是根据词条找文档的过程

es索引文档过程

Elasticsearch 中索引文档的一般过程:

  1. 创建索引(Index):在 Elasticsearch 中,首先需要为文档指定一个索引,索引是文档的逻辑容器,类似于关系型数据库中的数据库。可以通过 REST API 或者编程客户端创建索引。
  2. 定义映射(Mapping):在创建索引时,可以定义文档的映射,即每个字段的数据类型和属性。映射定义了文档的结构,包括字段名、数据类型、分词器等信息。
  3. 索引文档(Indexing):一旦索引和映射准备就绪,就可以开始索引文档了。文档是 Elasticsearch 存储、索引和搜索的基本单位,通常以 JSON 格式表示。将文档发送到 Elasticsearch 的特定索引中,Elasticsearch 将文档解析、索引并存储。
  4. 文档存储:Elasticsearch 将文档存储在倒排索引中,以便快速地进行全文搜索。文档被分割成多个字段,并根据字段类型进行索引化处理。如果是要索引且需要分词的,则先利用分词器进行分词,过滤,然后再形成倒排索引。

es搜索步骤

  1. 创建搜索请求对象,指定索引库名
  2. 设置搜索请求对象参数;搜索类型(范围、词条、搜索关键字分词搜索等)、分页、排序、高亮、聚合等;
  3. 执行请求;
  4. 解析响应结果

es相对mysql的特点是什么

MySQL更擅长的是事务类型的操作,存储结构化数据;

ES更擅长的是海量数据的搜索,分析和计算,不支持事务;存储非结构化数据;

es集群情况

ES集群架构6个节点,索引:3分片;ES调优:在设计映射阶段针对数据搜索情况合理设置数据类型,尽可能多的设置keyword类型域;根据需要设置不同域的索引、查询分词器;查询时尽可能少使用模糊和相似查询。

如果数据量增长迅速,数据过大如何解决?可以重新创建索引(指定更多的集群节点和分片),然后将原数据导入再次导入。(注意:es在创建索引后不能直接扩容)

目录
相关文章
|
7月前
|
人工智能 编解码 芯片
告别低效沟通|让技术提问不再头疼-这套高效AI提问模板来帮你
不会向ai提问,不知道怎么提问的 可以看看
20734 1
告别低效沟通|让技术提问不再头疼-这套高效AI提问模板来帮你
|
6月前
|
API 开发工具 开发者
HarmonyOS NEXT实战:拨打电话
本课程介绍如何在HarmonyOS SDK中使用Telephony Kit实现拨打电话功能。通过CallPhoneDemoPage示例,讲解如何输入电话号码并调用makeCall接口拨号,涉及call模块的使用及设备通话能力检测。
7870 0
|
存储 网络协议 Java
程序员的23大IO&NIO面试问题及答案
程序员的23大IO&NIO面试问题及答案
|
Kubernetes Linux Shell
CentOS7下快速搭建K8s集群实践
CentOS7下快速搭建K8s集群实践
862 1
CentOS7下快速搭建K8s集群实践
|
2月前
|
机器学习/深度学习 PyTorch TensorFlow
TensorFlow与PyTorch深度对比分析:从基础原理到实战选择的完整指南
蒋星熠Jaxonic,深度学习探索者。本文深度对比TensorFlow与PyTorch架构、性能、生态及应用场景,剖析技术选型关键,助力开发者在二进制星河中驾驭AI未来。
647 13
|
3月前
|
机器学习/深度学习 数据采集 人工智能
PyTorch学习实战:AI从数学基础到模型优化全流程精解
本文系统讲解人工智能、机器学习与深度学习的层级关系,涵盖PyTorch环境配置、张量操作、数据预处理、神经网络基础及模型训练全流程,结合数学原理与代码实践,深入浅出地介绍激活函数、反向传播等核心概念,助力快速入门深度学习。
219 1
|
2月前
|
机器学习/深度学习 人工智能 自然语言处理
38_多模态模型:CLIP的视觉-语言对齐_深度解析
想象一下,当你看到一张小狗在草地上奔跑的图片时,你的大脑立刻就能将视觉信息与"小狗"、"草地"、"奔跑"等概念联系起来。这种跨模态的理解能力对于人类来说似乎是理所当然的,但对于人工智能系统而言,实现这种能力却经历了长期的技术挑战。多模态学习的出现,标志着AI从单一模态处理向更接近人类认知方式的综合信息处理迈出了关键一步。
|
4月前
|
SQL 数据可视化 JavaScript
嵌套式事项整合工具深度解析:任务、子任务、执行流的统一调度机制
在项目执行中,任务虽已完成,但常因缺乏结构化管理导致进度混乱、协作低效。嵌套式事项整合工具通过多级拆分、状态聚合与逻辑联结,帮助团队构建清晰的任务结构,提升执行效率与协同能力。
嵌套式事项整合工具深度解析:任务、子任务、执行流的统一调度机制
|
存储 人工智能
|
运维 监控 应用服务中间件
自动化运维的利器:Ansible实战应用
【10月更文挑战第41天】在现代IT运维领域,自动化已成为提高效率、减少错误的关键。Ansible作为一种简单而强大的自动化工具,正被越来越多的企业采纳。本文将通过实际案例,展示如何使用Ansible简化日常运维任务,包括配置管理和批量部署等,旨在为读者提供一种清晰、易懂的自动化解决方案。
213 1