Java面试系列-ElasticSearch面试题20道,文档,索引,搜刮,聚合,分词器,
Gitee链接地址,发起收藏,后续我会对专栏进行整理,每篇文章进行校正和调整,然后同一存放在gitee仓库中1. Elasticsearch的根本架构是什么?
答案:
Elasticsearch的根本架构包括以下几个主要组件:
[*]Node:一个Elasticsearch实例,可以是集群的一部门。
[*]Cluster:一组节点,协同工作以提供扩展性和高可用性。
[*]Index:文档的聚集,类似于关系数据库中的表。
[*]Type:已废弃的概念,从前用于表现索引中的差别文档范例。
[*]Document:索引中的根本单元,类似于关系数据库中的行。
[*]Shard:索引的物理划分,每个索引可以有多个分片。
[*]Replica:分片的副本,用于进步可用性和查询性能。
2. Elasticsearch中的Shard和Replica是如何工作的?
答案:
[*]Shard:每个索引可以分为多个分片,每个分片是一个独立的Lucene索引。分片可以分布在整个集群的节点上,实现水平扩展。
[*]Replica:每个分片可以有多个副本,副本用于进步可用性和查询性能。如果主分片不可用,副本可以提拔为主分片。
[*]作用:分片用于扩展存储和查询能力,副本用于进步可用性和读取性能。
3. Elasticsearch中的文档是如何存储的?
答案:
[*]倒排索引:Elasticsearch使用倒排索引存储文档,倒排索引将文档中的词映射到包含这些词的文档列表。
[*]字段存储:文档的原始内容可以存储在字段中,用于检索和显示。
[*]分词器:文档在存储前会被分词器处理,生成词条,用于构建倒排索引。
4. Elasticsearch中的索引是如何创建的?
答案:
[*]API:通过REST API或客户端库创建索引。
[*]映射:创建索引时可以指定映射(mapping),定义字段的数据范例和属性。
[*]设置:可以设置索引的分片数和副本数等属性。
示例代码:
PUT /my-index
{
"settings": {
"number_of_shards": 3,
"number_of_replicas": 2
},
"mappings": {
"properties": {
"title": {
"type": "text" },
"date": {
"type": "date" }
}
}
}
5. Elasticsearch中的搜刮是如何工作的?
答案:
[*]查询解析:查询请求被解析成内部查询结构。
[*]分片查询:查询请求被分发到所有相关的分片。
[*]结果合并:每个分片返回的结果被合并,生成最终的搜刮结果。
[*]评分:使用TF-IDF等算法对文档进行评分,按评分排序。
6. Elasticsearch中的聚合是如何工作的?
答案:
[*]聚合:聚合操作用于对搜刮结果进行统计分析,如计数、求和、平均值等。
[*]分片聚合:聚合操作在每个分片上独立实行,结果被合并。
[*]桶和度量:聚合可以分为桶聚合(如terms、range)和度量聚合(如avg、sum)。
示例代码:
GET /my-index/_search
{
"size": 0,
"aggs": {
"by_category": {
"terms": {
"field": "category"
}
}
}
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]