-
Notifications
You must be signed in to change notification settings - Fork 3
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
4.10 Elasticsearch面试题 #140
Comments
问题一: 什么是ElasticSearch? Elasticsearch是一个基于Lucene的搜索引擎。它提供了具有HTTP Web界面和无架构JSON文档的分布式,多租户能力的全文搜索引擎。Elasticsearch是用Java开发的,根据Apache许可条款作为开源发布。 问题二: 您可以在文档上执行哪些基本操作? 可以在文档中进行以下操作: a.使用ELASTICSEARCH索引文档内容。 b.使用ELASTICSEARCH抓取文档内容。 C.使用ELASTICSEARCH更新文档内容。 d.使用ELASTICSEARCH删除文档内容。 问题三: Elasticsearch中的倒排索引是什么? 倒排索引是搜索引擎的核心。搜索引擎的主要目标是在查找发生搜索条件的文档时提供快速搜索。倒排索引是一种像数据结构一样的散列图,可将用户从单词导向文档或网页。它是搜索引擎的核心。其主要目标是快速搜索从数百万文件中查找数据。 一般情况下,像下面的一样,在书中我们已经倒过来索引。根据这个词,我们可以找到这个词所在的页面。 请考虑以下列语句: javainuse是一个很好的网站 javainuse是很好的网站之一。 为了索引的目的,上述文本被标记为单独的术语,并且所有独特术语被存储在索引内,诸如该术语出现在哪个文档以及该文档中术语位置是什么。 因此,文件文本的倒排索引如下 : 当您搜索术语网站或网站时,将针对倒排索引执行查询并查找术语,并快速识别出现这些术语的文档。 问题四: ElasticSearch中的集群、节点、索引、文档、类型是什么? 群集是一个或多个节点(服务器)的集合,它们共同保存您的整个数据,并提供跨所有节点的联合索引和搜索功能。群集由唯一名称标识,默认情况下为“elasticsearch”。此名称很重要,因为如果节点设置为按名称加入群集,则该节点只能是群集的一部分。 节点是属于集群一部分的单个服务器。它存储数据并参与群集索引和搜索功能。 索引就像关系数据库中的“数据库”。它有一个定义多种类型的映射。索引是逻辑名称空间,映射到一个或多个主分片,并且可以有零个或多个副本分片。 MySQL =>数据库 ElasticSearch =>索引 文档类似于关系数据库中的一行。不同之处在于索引中的每个文档可以具有不同的结构(字段),但是对于通用字段应该具有相同的数据类型。 MySQL => Databases => Tables => Columns / Rows ElasticSearch => Indices => Types =>具有属性的文档 类型是索引的逻辑类别/分区,其语义完全取决于用户。 问题五: ElasticSearch是否有架构? ElasticSearch可以有一个架构。架构是描述文档类型以及如何处理文档的不同字段的一个或多个字段的描述。Elasticsearch中的架构是一种映射,它描述了JSON文档中的字段及其数据类型,以及它们应该如何在Lucene索引中进行索引。因此,在Elasticsearch术语中,我们通常将此模式称为“映射”。 Elasticsearch具有架构灵活的能力,这意味着可以在不明确提供架构的情况下索引文档。如果未指定映射,则默认情况下,Elasticsearch会在索引期间检测文档中的新字段时动态生成一个映射。 |
问题六: ElasticSearch中的分片是什么? 在大多数环境中,每个节点都在单独的盒子或虚拟机上运行。 索引 - 在Elasticsearch中,索引是文档的集合。 分片 -因为Elasticsearch是一个分布式搜索引擎,所以索引通常被分割成分布在多个节点上的被称为分片的元素。 问题七: ElasticSearch中的副本是什么? 一个索引被分解成碎片以便于分发和扩展。副本是分片的副本。一个节点是一个属于一个集群的ElasticSearch的运行实例。一个集群由一个或多个共享相同集群名称的节点组成。 问题八: ElasticSearch中的分析器是什么? 在ElasticSearch中索引数据时,数据由为索引定义的Analyzer在内部进行转换。 分析器由一个Tokenizer和零个或多个TokenFilter组成。编译器可以在一个或多个CharFilter之前。分析模块允许您在逻辑名称下注册分析器,然后可以在映射定义或某些API中引用它们。 Elasticsearch附带了许多可以随时使用的预建分析器。或者,您可以组合内置的字符过滤器,编译器和过滤器器来创建自定义分析器。 问题九: 什么是ElasticSearch中的编译器? 编译器用于将字符串分解为术语或标记流。一个简单的编译器可能会将字符串拆分为任何遇到空格或标点的地方。Elasticsearch有许多内置标记器,可用于构建自定义分析器。 问题十: 什么是ElasticSearch中的过滤器? 数据由Tokenizer处理后,在编制索引之前,过滤器会对其进行处理。 |
问题十一: 启用属性,索引和存储的用途是什么? enabled属性适用于各类ElasticSearch特定/创建领域,如index和size。用户提供的字段没有“已启用”属性。 存储意味着数据由Lucene存储,如果询问,将返回这些数据。 存储字段不一定是可搜索的。默认情况下,字段不存储,但源文件是完整的。因为您希望使用默认值(这是有意义的),所以不要设置store属性 该指数属性用于搜索。 索引属性只能用于搜索。只有索引域可以进行搜索。差异的原因是在分析期间对索引字段进行了转换,因此如果需要的话,您不能检索原始数据。 |
字节跳动 数据处理 elasticsearch 面试问题https://blog.csdn.net/yiyiholic/article/details/82702701 2018年09月14日 14:44:52 YEE_HOLIC 阅读数:2166 面试问题如下: 数据结构 elasticsearch |
Elasticsearch面试篇https://blog.csdn.net/lby0307/article/details/79677803 Elasticsearch是如何实现Master选举的?Elasticsearch的选主是ZenDiscovery模块负责的,主要包含Ping(节点之间通过这个RPC来发现彼此)和Unicast(单播模块包含一个主机列表以控制哪些节点需要ping通)这两部分; Elasticsearch中的节点(比如共20个),其中的10个选了一个master,另外10个选了另一个master,怎么办?当集群master候选数量不小于3个时,可以通过设置最少投票通过数量(discovery.zen.minimum_master_nodes)超过所有候选节点一半以上来解决脑裂问题; |
客户端在和集群连接时,如何选择特定的节点执行请求的?TransportClient利用transport模块远程连接一个elasticsearch集群。它并不加入到集群中,只是简单的获得一个或者多个初始化的transport地址,并以 轮询 的方式与这些地址进行通信。 详细描述一下Elasticsearch索引文档的过程。协调节点默认使用文档ID参与计算(也支持通过routing),以便为路由提供合适的分片。 补充:关于Lucene的Segement: Lucene索引是由多个段组成,段本身是一个功能齐全的倒排索引。 |
详细描述一下Elasticsearch更新和删除文档的过程。删除和更新也都是写操作,但是Elasticsearch中的文档是不可变的,因此不能被删除或者改动以展示其变更; 详细描述一下Elasticsearch搜索的过程。搜索被执行成一个两阶段过程,我们称之为 Query Then Fetch; |
在Elasticsearch中,是怎么根据一个词找到对应的倒排索引的?SEE: Lucene的索引文件格式(1) |
Elasticsearch在部署时,对Linux的设置有哪些优化方法?64 GB 内存的机器是非常理想的, 但是32 GB 和16 GB 机器也是很常见的。少于8 GB 会适得其反。 补充:索引阶段性能提升方法 使用批量请求并调整其大小:每次批量数据 5–15 MB 大是个不错的起始点。 |
对于GC方面,在使用Elasticsearch时要注意什么?SEE:https://elasticsearch.cn/article/32 Elasticsearch对于大数据量(上亿量级)的聚合如何实现?Elasticsearch 提供的首个近似聚合是cardinality 度量。它提供一个字段的基数,即该字段的distinct或者unique值的数目。它是基于HLL算法的。HLL 会先对我们的输入作哈希运算,然后根据哈希运算的结果中的 bits 做概率估算从而得到基数。其特点是:可配置的精度,用来控制内存的使用(更精确 = 更多内存);小的数据集精度是非常高的;我们可以通过配置参数,来设置去重需要的固定内存使用量。无论数千还是数十亿的唯一值,内存使用量只与你配置的精确度相关。 在并发情况下,Elasticsearch如果保证读写一致?可以通过版本号使用乐观并发控制,以确保新版本不会被旧版本覆盖,由应用层来处理具体的冲突; |
介绍一下你们的个性化搜索方案? |
是否了解字典树?常用字典数据结构如下所示: Trie的核心思想是空间换时间,利用字符串的公共前缀来降低查询时间的开销以达到提高效率的目的。它有3个基本性质: 可以看到,trie树每一层的节点数是26^i级别的。所以为了节省空间,我们还可以用动态链表,或者用数组来模拟动态。而空间的花费,不会超过单词数×单词长度。 |
拼写纠错是如何实现的?拼写纠错是基于编辑距离来实现;编辑距离是一种标准的方法,它用来表示经过插入、删除和替换操作从一个字符串转换到另外一个字符串的最小操作步数; 对于拼写纠错,我们考虑构造一个度量空间(Metric Space),该空间内任何关系满足以下三条基本条件: |
Elasticsearch面试题
https://blog.csdn.net/moakun/article/details/82817611
The text was updated successfully, but these errors were encountered: