面试题:项目中是如何使用ES(elasticsearch)的?如何优化的?数据量多少?

背景:

面试的时候要是简历上写了elasticsearch,那好巧不巧,面试官对这个一般都很感兴趣,不管你是写了解还是仅仅使用过,都会不假思索的问到你炸。有些人实际上并没有使用过或者只是增删改查,就基本上,唯唯诺诺答不出来什么。笔者就讲讲自己公司里面怎么用es的。

想了解概念的,可以自己查博客或者看看我总结的:

src/main/java/Elasticsearch.java · 游建明/java面试相关的问题解答 - Gitee.com

1. 业务:项目中一般存储企业信息,企业变更信息,企业的各类关联数据。或者存储舆情数据,就是互联网爬虫爬取的网络上的微博,今日头条的热点数据等等。一般我们系统中是对这些数据做AC算法关联词匹配查询,然后对结果分析,对热点事件进行预测。

2. 数据量:看业务吧,企业是近千万家,包含企业的各类变更法人信息等,舆情数据是亿级的,每日入库千万级数据,保留近两个月的数据

3. 集群大小:不同业务集群也不同,一般是三台集群,内存64G,磁盘单台2-4T

4. 优化:企业数据比较侧重于并发读,每日写入不大,但是对数据的可靠性可用性要求高,互联网舆情数据比较侧重于并发写,每日写入量大,但是查询较少,而且允许数据丢失,两种的优化也不一样

5.舆情数据优化:

  1. 增加refresh的时间间隔,默认是1s,一般开到30s
  2. 减少副本数量:es默认为1个,有时候不设置副本或者设置1个,看数据,因为丢失了可以再次爬取,但是设置副本占据的数据量太大了,导致磁盘不够用
  3. 设置es的堆内存,64G的机器,设置为31G,而且最大最小堆内存要设置成一样,避免内部加大内存的消耗
  4. 禁止swap:swap是内存和磁盘的交换,要是发生了会导致卡顿,一般设置锁定内存的参数bootstrap.memory_lock:true
  5. 修改translog的参数:translog是es防止数据丢失的一种策略,可以设置异步刷新到磁盘,而且可以设置的大一点,flush的时间也可以设置的久一点

5. 企业数据优化

  1. 设置分区:三台节点的话,分区最大不应该超过节点数的两倍,所以分区设置为6
  2. 设置副本:副本数设置为3,保证并发查询和可用性
  3. 查询优化
    1. scroll查询:如果要查询大数据量的话,最好避免直接查询,使用scroll翻滚查询,再聚合查询结果
    2. 自动生成id:如果不是业务上的强要求,尽量使用es自己生成id,如果使用特定id,es会检查对应的索引下是否存在相同id,随着文档越来越大,消耗也会越来越大
    3. 少使用nested:创建索引的时候尽量少使用nested类型,并且保证nested类型的字段不能过多,一个document,每一个nested都会生成一个独立的document,影响查询效率,尤其是join的
    4. 批量插入数据使用bulk,bulk默认设置批量提交的数据量不能超过100M
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一些 Elasticsearch 面试题: 1. 什么是 ElasticsearchElasticsearch 是一个基于 Lucene 的分布式搜索和分析引擎,用于存储、搜索和分析大的结构化和非结构化数据。 2. Elasticsearch 的优点有哪些? - 可扩展性:Elasticsearch 可以轻松地扩展到数百个节点。 - 高可用性:Elasticsearch 具有自动分片和副本功能,确保数据不会丢失。 - 实时搜索:Elasticsearch 可以在毫秒级别内搜索和返回结果。 - 多种查询方式:Elasticsearch 支持全文搜索、精确匹配、模糊匹配等多种查询方式。 - 易于安装和使用Elasticsearch 提供了简单的 REST API,易于安装和使用。 3. Elasticsearch 的主要组件是什么? Elasticsearch 主要由以下组件组成: - 节点:Elasticsearch 集群中的单个服务器。 - 索引:包含相似类型的文档的集合。 - 文档:Elasticsearch 中的基本单位,包含一组相关的字段和值。 - 分片:将索引分成多个部分的过程,以便在多个节点上分布索引数据。 - 副本:每个分片的副本,用于提高可用性和性能。 4. Elasticsearch 支持哪些查询类型? Elasticsearch 支持以下查询类型: - 全文搜索:在所有字段中搜索匹配查询字符串的文档。 - 精确匹配查询:匹配指定字段的完全匹配值。 - 范围查询:匹配指定字段的值在指定范围内的文档。 - 前缀查询:匹配指定字段的以指定前缀开头的文档。 - 正则表达式查询:使用正则表达式匹配指定字段的文档。 - 近似查询:匹配指定字段的与查询字符串相似的文档。 5. Elasticsearch 如何保证数据的安全性? Elasticsearch 提供以下安全措施: - 身份验证和授权:Elasticsearch 可以使用集成的安全插件进行身份验证和授权。 - SSL/TLS 加密:Elasticsearch 支持 SSL/TLS 加密来保护数据传输。 - 安全审计:Elasticsearch 可以记录所有用户活动和访问尝试。 - 安全集群:Elasticsearch 可以配置为只允许特定 IP 地址的访问,并限制特定类型的节点的访问权限。 以上是一些 Elasticsearch 面试题,希望能对你有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值