zoukankan      html  css  js  c++  java
  • Hadoop基础(五十七):其他面试题ES(二)

    来源:https://mp.weixin.qq.com/s/MU87hW3W2S1Fi6CqnnXAGA

    问题列表和答案来自国外博客(原文答案不准确,有错误),为避免误导,我对每个问题做了属于自己的理解和解答。

    问题都非常基础,文章有点长,但请你耐心把它看完,期望对你的 Elastic 求职有所帮助!

    1、简要介绍一下Elasticsearch?

    严谨起见,如下一段话直接拷贝官方网站:https://www.elastic.co/cn/elasticsearch/

    Elasticsearch 是一个分布式、RESTful 风格的搜索和数据分析引擎,能够解决不断涌现出的各种用例。作为 Elastic Stack 的核心,它集中存储您的数据,帮助您发现意料之中以及意料之外的情况。

    ElasticSearch 是基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。

    核心特点如下:

    • 分布式的实时文件存储,每个字段都被索引且可用于搜索。
    • 分布式的实时分析搜索引擎,海量数据下近实时秒级响应。
    • 简单的restful api,天生的兼容多语言开发。
    • 易扩展,处理PB级结构化或非结构化数据。

    2、 您能否说明当前可下载的稳定Elasticsearch版本?

    Elasticsearch 当前最新版本是7.10(2020年11月21日)。

    为什么问这个问题?ES 更新太快了,应聘者如果了解并使用最新版本,基本能说明他关注 ES 更新。甚至从更广维度讲,他关注技术的迭代和更新。

    但,不信你可以问问,很多求职者只知道用了 ES,什么版本一概不知。

    3、安装 Elasticsearch 需要依赖什么组件吗?

    ES 早期版本需要JDK,在7.X版本后已经集成了 JDK,已无需第三方依赖。

    4、您能否分步介绍如何启动 Elasticsearch 服务器?

    启动方式有很多种,一般 bin 路径下

    ./elasticsearch -d 

    就可以后台启动。

    打开浏览器输入 http://ES IP:9200 就能知道集群是否启动成功。

    如果启动报错,日志里会有详细信息,逐条核对解决就可以。

    5、能列出 10 个使用 Elasticsearch 作为其搜索引擎或数据库的公司吗?

    这个问题,铭毅本来想删掉。但仔细一想,至少能看出求职者的视野够不够开阔。

    参与过 Elastic中文社区活动或者经常关注社区动态的就知道,公司太多了,列举如下(排名不分先后):

    • 阿里
    • 腾讯
    • 百度
    • 京东
    • 美团
    • 小米
    • 滴滴
    • 携程
    • 今日头条
    • 贝壳找房
    • 360
    • IBM
    • 顺丰快递

    几乎我们能想到的互联网公司都在使用 Elasticsearch。

    关注 TOP 互联网公司的相关技术的动态和技术博客,也是一种非常好的学习方式。

    6、 解释一下Elasticsearch Cluster?

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

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

    7、解释一下 Elasticsearch Node?

    节点是 Elasticsearch 的实例。实际业务中,我们会说:ES集群包含3个节点、7个节点。

    这里节点实际就是:一个独立的 Elasticsearch 进程,一般将一个节点部署到一台独立的服务器或者虚拟机、容器中。

    不同节点根据角色不同,可以划分为:

    • 主节点

    帮助配置和管理在整个集群中添加和删除节点。

    • 数据节点

    存储数据并执行诸如CRUD(创建/读取/更新/删除)操作,对数据进行搜索和聚合的操作。

    • 客户端节点(或者说:协调节点) 将集群请求转发到主节点,将与数据相关的请求转发到数据节点

    • 摄取节点

    用于在索引之前对文档进行预处理。

    8、解释一下 Elasticsearch集群中的 索引的概念 ?

    Elasticsearch 集群可以包含多个索引,与关系数据库相比,它们相当于数据库表

    其他类别概念,如下表所示,点到为止。

    9、解释一下 Elasticsearch 集群中的 Type 的概念 ?

    5.X 以及之前的 2.X、1.X 版本 ES支持一个索引多个type的,举例 ES 6.X 中的Join 类型在早期版本实际是多 Type 实现的。

    在6.0.0 或 更高版本中创建的索引只能包含一个 Mapping 类型。

    Type 将在Elasticsearch 7.0.0中的API中弃用,并在8.0.0中完全删除。

    很多人好奇为什么删除?看这里:

    https://www.elastic.co/guide/en/elasticsearch/reference/current/removal-of-types.html

    10、你能否在 Elasticsearch 中定义映射?

    映射是定义文档及其包含的字段的存储和索引方式的过程。

    例如,使用映射定义:

    • 哪些字符串字段应该定义为 text 类型。

    • 哪些字段应该定义为:数字,日期或地理位置 类型。

    • 自定义规则来控制动态添加字段的类型。

    11、Elasticsearch的 文档是什么?

    文档是存储在 Elasticsearch 中的 JSON 文档。它等效于关系数据库表中的一行记录。

    12、解释一下 Elasticsearch 的 分片?

    当文档数量增加,硬盘容量和处理能力不足时,对客户端请求的响应将延迟。

    在这种情况下,将索引数据分成小块的过程称为分片,可改善数据搜索结果的获取。

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

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

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

    14、请解释在 Elasticsearch 集群中添加或创建索引的过程?

    要添加新索引,应使用创建索引 API 选项。创建索引所需的参数是索引的配置Settings,索引中的字段 Mapping 以及索引别名 Alias。

    也可以通过模板 Template 创建索引。

    15、在 Elasticsearch 中删除索引的语法是什么?

    可以使用以下语法删除现有索引:

    DELETE <index_name>

    支持通配符删除:

    DELETE my_*

    16、在 Elasticsearch 中列出集群的所有索引的语法是什么?

    GET _cat/indices

    17、在索引中更新 Mapping 的语法?


    PUT test_001/_mapping
    {
      "properties": {
        "title":{
          "type":"keyword"
        }
      }
    }

    18、在Elasticsearch中 按 ID检索文档的语法是什么?

    GET test_001/_doc/1

    19、解释 Elasticsearch 中的相关性和得分?

    当你在互联网上搜索有关 Apple 的信息时。它可以显示有关水果或苹果公司名称的搜索结果。

    • 你可能要在线购买水果,检查水果中的食谱或食用水果,苹果对健康的好处。

    • 你也可能要检查Apple.com,以查找该公司提供的最新产品范围,检查评估公司的股价以及最近6个月,1或5年内该公司在纳斯达克的表现。

    同样,当我们从 Elasticsearch 中搜索文档(记录)时,你会对获取所需的相关信息感兴趣。基于相关性,通过Lucene评分算法计算获得相关信息的概率。

    ES 会将相关的内容都返回给你,只是:计算得出的评分高的排在前面,评分低的排在后面。

    计算评分相关的两个核心因素是:词频和逆向文档频率(文档的稀缺性)。

    大体可以解释为:单篇文档词频越高、得分越高;多篇文档某词越稀缺,得分越高。

    20、我们可以在 Elasticsearch 中执行搜索的各种可能方式有哪些?

    核心方式如下:

    方式一:基于 DSL 检索(最常用) Elasticsearch提供基于JSON的完整查询DSL来定义查询。

    GET /shirts/_search
    {
      "query": {
        "bool": {
          "filter": [
            { "term": { "color": "red"   }},
            { "term": { "brand": "gucci" }}
          ]
        }
      }
    }

    方式二:基于 URL 检索

    GET /my_index/_search?q=user:seina

    方式三:类SQL 检索

    POST /_sql?format=txt
    {
      "query": "SELECT * FROM uint-2020-08-17 ORDER BY itemid DESC LIMIT 5"
    }

    功能还不完备,不推荐使用。

    21、Elasticsearch 支持哪些类型的查询?

    查询主要分为两种类型:精确匹配、全文检索匹配。

    • 精确匹配,例如 term、exists、term set、 range、prefix、 ids、 wildcard、regexp、 fuzzy等。

    • 全文检索,例如match、match_phrase、multi_match、match_phrase_prefix、query_string 等

    22、精准匹配检索和全文检索匹配检索的不同?

    两者的本质区别:

    • 精确匹配用于:是否完全一致?

    举例:邮编、身份证号的匹配往往是精准匹配。

    • 全文检索用于:是否相关?

    举例:类似B站搜索特定关键词如“马保国 视频”往往是模糊匹配,相关的都返回就可以。

    23、请解释一下 Elasticsearch 中聚合?

    聚合有助于从搜索中使用的查询中收集数据,聚合为各种统计指标,便于统计信息或做其他分析。聚合可帮助回答以下问题:

    • 我的网站平均加载时间是多少?

    • 根据交易量,谁是我最有价值的客户?

    • 什么会被视为我网络上的大文件?

    • 每个产品类别中有多少个产品?

    聚合的分三类:

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

    • 分桶 Bucket 聚合

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

    • 指标 Metric 聚合

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

    • 管道 Pipeline 聚合

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

    24、你能告诉我 Elasticsearch 中的数据存储功能吗?

    Elasticsearch是一个搜索引擎,输入写入ES的过程就是索引化的过程,数据按照既定的 Mapping 序列化为Json 文档实现存储。

    25、什么是Elasticsearch Analyzer?

    分析器用于文本分析,它可以是内置分析器也可以是自定义分析器。它的核心三部分构成如下图所示:

    推荐:Elasticsearch自定义分词,从一个问题说开去

     

     

     

     

     

    本文来自博客园,作者:秋华,转载请注明原文链接:https://www.cnblogs.com/qiu-hua/p/14117042.html

  • 相关阅读:
    移动端touch与click区别--移动端开发整理笔记(五)
    移动端适配(rem & viewport)--移动端开发整理笔记(四)
    移动端事件(touchstart、touchmove、touchend)--移动端开发整理笔记(三)
    Flex弹性盒模型(新老版本完整)--移动端开发整理笔记(二)
    meta设置与去除默认样式--移动端开发整理笔记(一)
    react native ios 上架
    react16 路由按需加载、路由权限配置
    mpvue 页面预加载,新增preLoad生命周期
    mpvue 星星打分组件
    mpvue 签字组件
  • 原文地址:https://www.cnblogs.com/qiu-hua/p/14117042.html
Copyright © 2011-2022 走看看