Elasticsearch的基本概念和指标 - 编程一生

Elasticsearch的基本概念和指标 - 编程一生

💡 原文中文,约1700字,阅读约需4分钟。
📝

内容提要

本文介绍Elasticsearch的基本概念与指标:近实时搜索延迟约1秒;集群由多节点组成,统一进行索引和搜索;节点是集群中的服务器;索引是相同特性文档的集合;文档是最小索引单元,以JSON表示;分片用于突破单机存储限制,副本保障可用性;fielddata用于文本字段内存查询;doc values支持高效聚合;norms存储评分因子;召回率衡量查全,准确率衡量查准。

🔎

延伸解读

近实时搜索的延迟含义

文章指出Elasticsearch是近实时平台,从创建索引到可被搜索通常有约1秒延迟。这意味着写入后并非立即可查,对需要强实时一致性的场景,需考虑这一延迟。理解该特性有助于合理设计数据流和预期查询结果。

分片与副本的扩展与容错

分片将索引分割成多个小块,以突破单节点硬件限制,且每个分片独立完整,可移植到集群任意节点。副本则保障可用性。创建索引时可指定分片和副本数量,这为数据规模增长和故障恢复提供了基础。

内存数据结构的选择

fielddata用于文本字段的内存查询,按需加载,通过反转倒排索引将结果存于JVM堆,可能消耗较多内存。doc values则支持高效聚合,对内存更友好。norms存储评分因子。了解这些结构有助于优化查询与聚合性能。

召回率与准确率的权衡

召回率衡量查全,即检索出的相关文档占所有相关文档的比例;准确率衡量查准,即检索出的相关文档占检索出文档总数的比例。两者常需权衡,理解它们有助于评估和调整搜索效果。

Q&A

Elasticsearch 的近实时搜索是什么意思?

Elasticsearch 是一个近实时的搜索平台,从创建索引到能被搜索到只有很少的延时,通常约为 1 秒。

Elasticsearch 中的集群和节点有什么区别?

集群是一个或多个节点协同工作来承载所有数据,并提供跨所有节点的索引和搜索能力,集群有唯一名称标识,默认叫 elasticsearch。节点是集群的一部分,即集群里的一个服务器,存储数据并提供索引和搜索能力,节点也有名称标识,默认是启动时指定的随机 UUID。

Elasticsearch 的索引和文档是什么?

索引是有相同特性的文档集合,靠名称作为唯一标识,通过索引名可以对索引内的文档进行添加、更新、搜索、删除等操作。文档是可以被索引的最小单元,用 JSON 表示。

为什么 Elasticsearch 需要分片和副本?

分片是为了解决让索引可以存储超过一个节点机器硬件限制的数据的问题,ES 提供了将索引分割成多块的能力,每个分片内部独立且功能完整,可以移植到集群的任何节点上。副本用于保障可用性。

fielddata 和 doc values 在 Elasticsearch 中有什么不同用途?

fielddata 是文本字段使用的一个用于内存查询的数据结构,第一次使用时按需加载,用于聚合、排序或脚本运算,通过读取所有段内的整个倒排索引,反转词条和文档关系,把结果存储到 JVM 堆中实现。doc values 是通过数据结构来进行聚合工作,让聚合快速、高效、内存友好。

Elasticsearch 中的召回率和准确率分别衡量什么?

召回率也叫查全率,是检索出的相关文档数和文档库中所有的相关文档数的比率,衡量的是检索结果的查全率。准确率也叫精度,是检索出的相关文档数与检索出的文档总数的比率,衡量的是检索结果的查准率。

🏷️

标签

➡️

继续阅读