ElasticSearch面试题2

Mapping属性详细介绍/常见的字段数据类型:

         映射(mapping)︰mapping是对索引库中文档的约束信息(例如字段名、数据类型),类似表的结构约束;每个索引库都应该有自己的映射          

        数据库一定要先创建表才能去添加数据。ES里面也一样,你得先有了索引库才能往里边去添加文档,要想去创建一个索引库,就像建表一样,建表语句里面是要指定个schemer,也就是对字段的一些约束。我们的索引库它在创建时需要去指定对应的mapping映射: 对文档的约束。

mapping常见的属性: 

       ES中的文档是jason风格的,作为一个jason,它里面要么是数值,要么是布尔值,要么是字符串,要么数组,要么是对象嵌套。这些类型对应到我们的这个ES中都有对应的一个类型去进行约束:

注意事项: 
  • text是可分词的文本,比如说我这里的info,info是个人信息;
  • keyword是精确值,它只有合在一起才有意义,不能拆开,如邮箱;
  • index代表是否创建倒排索引,为true,就会给你创建倒排索引,就可以参与搜索了,如果说这儿给了false,就不会倒排索引,就没有办法去搜索这个字段。 它的默认值就是ture,也就是说你在做字段映射时,如果你不去设置index,默认所有的字段都会被创建倒排索引,将来每个字段都可以参与搜索。
  • 我们在实际开发的过程中,不是所有的字段都需要搜索,比如邮箱、商品的图片是一个url地址,没有搜索意义。

  • analyzer其实是结合text类型去用的,所有数据类型里,只有text类型需要分词,其他所有类型都无需分词

  • 常见的字段数据类型还有 GEO 地理位置相关类型。

  • 在ES当中是没有数组这种类型,但是它允许你某一个类型的字段有多个值,比如说你是一个部门类型,但是你里边有多个值没问题,数据类型要一致

                                

       Object将来要结合Properties声明子字段 ,Properties是该字段的子字段。例如name有两个子属性:firstName 、 lastName, 将来我就可以用property来指定name的子属性:

                                                

ElasticSearch是如何实现Master选举的?

ElasticSearch的选举是ZenDiscovery模块负责的,主要包含Ping(节点之间通过这个RPC来发现彼此)和Unicast(单播模块包含一个主机列表以控制哪些节点需要ping通)这两部分;

对所有可以成为master的节点(node.master: true)根据nodeId字典排序,每次选举每个节点都把自己所知道节点排一次序,然后选出第一个(第0位)节点,暂且认为它是master节点。

如果对某个节点的投票数达到一定的值(可以成为master节点数n/2+1)并且该节点自己也选举自己, 那这个节点就是master。否则重新选举一直到满足上述条件。

前置前提:

1、 只有候选主节点(master:true)的节点才能成为主节点。

2、 最小主节点数(min_master_nodes)的目的是防止脑裂。

这个我看了各种网上分析的版本和源码分析的书籍,云里雾里。

核对了一下代码,核心入口为findMaster,选择主节点成功返回对应Master,否则返回null。选举流程大致描述如下:

第一步:确认候选主节点数达标,elasticsearch.yml设置的值discovery.zen.minimum_master_nodes;

第二步:比较:先判定是否具备master资格,具备候选主节点资格的优先返回;若两节点都为候选主节点,则id小的值会主节点。注意这里的id为string类型。

ElasticSearch如何避免脑裂?

可以通过设置最少投票通过数量(discovery.zen.minimum_master_nodes)超过所有候选节点一半以上,来解决脑裂问题。

定义副本、创建副本的好处是什么?

副本是 分片的对应副本,用在极端负载条件下提高查询吞吐量或实现高可用性。

所谓高可用主要指:如果某主分片1出了问题,对应的副本分片1会提升为主分片,保证集群的高可用。

对于 GC 方面,在使用 Elasticsearch 时要注意什么?

1、 SEE

2、 倒排词典的索引需要常驻内存,无法 GC,需要监控 data node 上 segmentmemory 增长趋势。

3、 各类缓存,field cache, filter cache, indexing cache, bulk queue 等等,要设置合理的大小,并且要应该根据最坏的情况来看 heap 是否够用,也就是各类缓存全部占满的时候,还有 heap 空间可以分配给其他任务吗?避免采用 clear cache等“自欺欺人”的方式来释放内存。

4、 避免返回大量结果集的搜索与聚合。确实需要大量拉取数据的场景,可以采用scan & scroll api 来实现。

5、 cluster stats 驻留内存并无法水平扩展,超大规模集群可以考虑分拆成多个集群通过 tribe node 连接。

6、 想知道 heap 够不够,必须结合实际应用场景,并对集群的 heap 使用情况做持续的监控。

请解释一下 Elasticsearch 中聚合?

聚合的分三类:

主要查看7.10 的官方文档,早期是4个分类,别大意啊!

分桶 Bucket 聚合

根据字段值,范围或其他条件将文档分组为桶(也称为箱)。

指标 Metric 聚合

从字段值计算指标(例如总和或平均值)的指标聚合。

管道 Pipeline 聚合

子聚合,从其他聚合(而不是文档或字段)获取输入。

解释一下Elasticsearch Cluster?

Elasticsearch 集群是一组连接在一起的一个或多个 Elasticsearch 节点实例。

Elasticsearch 集群的功能在于在集群中的所有节点之间分配任务,进行搜索和建立索引。

说说你们公司 es 的集群架构,索引数据大小,分片有多少,以及一些调优手段  

在并发情况下,Elasticsearch 如果保证读写一致?

(1)可以通过版本号使用乐观并发控制,以确保新版本不会被旧版本覆盖,由应用层来处理具体的冲突;

(2)另外对于写操作,一致性级别支持 quorum/one/all,默认为 quorum,即只有当大多数分片可用时才允许写操作。但即使大多数可用,也可能存在因为网络等原因导致写入副本失败,这样该副本被认为故障,分片将会在一个不同的节点上重建。

(3)对于读操作,可以设置 replication 为 sync(默认),这使得操作在主分片和副本分片都完成后才会返回;如果设置 replication 为 async 时,也可以通过设置搜索请求参数_preference 为 primary 来查询主分片,确保文档是最新版本。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Redis缓存介绍以及常见缓存问题:穿透、雪崩和击穿

概念 缓存就是数据交换的缓冲区(Cache),是存贮数据的临时地方,一般读写性能较高。 作用: 降低后端负载 提高读写效率,降低相应时间 成本: 数据一致性成本 代码维护成本 运维成本 缓存更…

JAVA系列 小白入门参考资料 类和对象(3)

温馨提示: 此篇文章需要前两篇文章作为基础。 JAVA系列 小白入门参考资料 类和对象(1)​​​​​​​ JAVA系列 小白入门参考资料 类和对象(2) 目录 1. 封装 引入封装 访问修饰符 封装的具体实现 get方法和…

Elasticsearch 索引 blocks:深入探讨数据保护

Elasticsearch 作为搜索和分析数据的首选分布式引擎在技术领域脱颖而出,尤其是在处理日志、事件和综合文本搜索时。 它的与众不同之处在于它如何让你使用各种块选项调整对其索引的访问。 这对于那些负责技术项目的人(比如管理员和编码员)来说…

计算机系统概述试题(二)

一、单项选择题 01.关于CPU主频、CPI、MIPS、MFLOPS,说法正确的是( )。 A.CPU主频是指CPU系统执行指令的频率,CPI是执行一条指令平均使用的频率 B.CPI是执行一条指令平均使用CPU时钟的个数,MIPS描述一条CPU指令平均使用 的CPU时钟…

微信小程序与web-view网页进行通信的尝试

首先,微信小程序向web-view传递数据一般通过地址栏传参的形式(给src赋值或者修改hash),这样一般就已经能够满足实际开发需求了,所以这里主要探讨web-view向微信小程序传参。下面,我们从官方文档入手&#x…

计算机组成实验(4)

实验目的: 1. 初步了解GPIO接口与设备 2. 了解计算机系统的基本结构 3. 了解计算机各组成部分的关系 4. 了解并掌握IP核的使用方法 5. 了解SOC系统并用IP核实现简单的SOC系统 实验环境: 1. 计算机(Intel Core i5以上,4GB内存以…

【工具】--- Adobe Illustrator 下载-入门绘图

文章目录 软件下载入门项目可看课程 尝试使用Adobe Illustrator(设计师常用软件)进行科研绘图。 软件下载 阿里云盘下载 入门项目 绘制一个箭头并保持为SVG, 直线->画线->窗口->描边->选择想要的箭头样式->颜色->改为蓝…

git误操作版本回退的方法

场景:在使用git进行代码提交的时候不小心执行了git reset 命令进行了版本回退但是在这之前进行了git add . git commit -m "提交"等命令,正常情况下就可以直接使用 git reset 版本号 进行代码的回退,但是发现自己不能找打上一个提…

机器学习:逻辑回归

概念 首先,逻辑回归属于分类算法,是线性分类器。我们可以认为逻辑回归是在多元线性回归的基础上把结果给映射到0-1的区间内,hθ(x)越接近1越有可能是正例,反之,越接近0越有可能是负例。那么&am…

IC设计数据传输 如何能保障安全高效?

IC(集成电路)设计数据,对于IC设计企业来说,其重要性不言而喻。所以IC设计数据传输过程中,其安全性和效率,也需要有保障。 首先我们来看看IC设计数据为什么重要,其重要性体现在多个方面&#xff…

edge 入门基础了解使用

随着Windows 11的发布,Microsoft Edge也迎来了新的更新和改进。作为一名长期使用Edge的用户,我不仅注意到了这些表面的变化,还深入研究了Edge在Windows 11上的新特性和潜在优势。 快捷方式 查找框 在Microsoft Edge浏览器中,按…

踩坑Mybatis + Mybatis-plus + MyBatis-plus-join

数据库里有两张表 tb_bursary和tb_student tb_bursary里关联了tb_student.id作为外键 由于tb_student表可以单独操作,而tb_bursary需要联合tb_student查询 所以一开始,我是用mybatis-plus mybaits混合的模式 mybatis-plus单独操作tb_student表&…

学习 Rust 第 22 天:mini_grep 第 2 部分

书接上文,在本文中,我们学习了如何通过将 Rust 程序的逻辑移至单独的库箱中并采用测试驱动开发 (TDD) 实践来重构 Rust 程序。通过在实现功能之前编写测试,我们确保了代码的可靠性。我们涵盖了基本的 Rust 概念,例如错误处理、环境…

小程序SSL证书更新指南

随着网络技术的不断发展,小程序已经成为许多企业和个人进行业务推广和服务提供的重要平台。在享受小程序带来的便利和高效的同时,我们也必须重视其安全性问题。SSL证书作为保障小程序数据传输安全的重要手段,其更新工作不容忽视。本文将为大家…

在线教程|零门槛部署 Llama 3,70B 版本只占 1.07G 存储空间,新用户免费体验 8B 版本

4 月 18 日,Meta 宣布开源 Llama 3,这个号称「迄今为止最好的开源大模型」一经发布,立刻引爆科技圈! 发布当天恰逢斯坦福大学教授、AI 顶尖专家吴恩达的生日,作为 AI 开源倡导者,他激动地发文表示&#xff…

CogAgent:开创性的VLM在GUI理解和自动化任务中的突破

尽管LLMs如ChatGPT在撰写电子邮件等任务上能够提供帮助,它们在理解和与GUIs交互方面存在挑战,这限制了它们在提高自动化水平方面的潜力。数字世界中的自主代理是许多现代人梦寐以求的理想助手。这些代理能够根据用户输入的任务描述自动完成如在线预订票务…

【doghead】ubuntu构建libuv

按照官方的文档2024年3月的版本。首先构建libuv 最终构建的还得了test 构建过程 zhangbin@DESKTOP-1723CM1:/mnt/d/XTRANS/thunderbolt/ayame/zhb-bifrost$ ls Bifrost-202403 README.md draw player-only worker 大神的带宽估计.png zhangbin@DESKTOP-1723CM1:/mnt/d/XTRANS/…

计算机网络 备查

OSI 七层模型 七层模型协议各层实现的功能 简要 详细 TCP/IP协议 组成 1.传输层协议 TCP 2.网络层协议 IP 协议数据单元(PDU)和 封装 数据收发过程 数据发送过程 1. 2.终端用户生成数据 3.数据被分段,并加上TCP头 4.网络层添加IP地址信息…

React + 项目(从基础到实战) -- 第十期

目标 学会react 状态管理工具 使用redux管理用户状态 Context 跨层级传递,不像props层层传递类似于Vue的provide/inject用于:切换主题颜色,切换语言 useReducer useState 的替代方案 简化版的redux MobX 1. MobX 介绍 MobX 中文文档 声明式的修改数据 , 像vue state ac…

【算法基础实验】图论-UnionFind连通性检测之quick-union

Union-Find连通性检测之quick-union 理论基础 在图论和计算机科学中,Union-Find 或并查集是一种用于处理一组元素分成的多个不相交集合(即连通分量)的情况,并能快速回答这组元素中任意两个元素是否在同一集合中的问题。Union-Fi…