Link Search Menu Expand Document Documentation Menu

概念

本页定义了与 OpenSearch 相关的关键术语和概念。

基本概念

  • 文档:OpenSearch 中的基本信息单元,以 JSON 格式存储。
  • 索引:相关文档的集合。
  • JSON (JavaScript 对象表示法):一种用于在 OpenSearch 中存储数据的文本格式,将信息表示为键值对。
  • 映射:索引的模式定义,指定文档及其字段的存储和索引方式。

集群架构

  • 节点:OpenSearch 集群中的单个服务器。
  • 集群:协同工作的 OpenSearch 节点集合。
  • 集群管理器:负责管理集群范围操作的节点。
  • 分片:索引数据的一个子集;索引被分成多个分片,以便在节点间分发。
  • 主分片:包含索引数据的原始分片。
  • 副本分片:主分片的副本,用于冗余和提高搜索性能。

数据结构和存储

  • Doc values:一种磁盘上的数据结构,用于高效地排序和聚合字段值。
  • 倒排索引:一种将单词映射到包含它们的文档的数据结构。
  • Lucene:OpenSearch 用于索引和搜索数据的底层搜索库。
  • :分片内不可变的数据存储单元。

数据操作

  • 摄入:向 OpenSearch 添加数据的过程。
  • 索引:在 OpenSearch 中存储和组织数据以使其可搜索的过程。
  • 批量索引:在单个请求中索引多个文档的过程。

文本分析

  • 文本分析:将文档的非结构化自由文本内容拆分为一系列词元的过程,这些词元随后存储在倒排索引中。
  • 分析器:一个处理文本以供搜索的组件。分析器将文本转换为存储在倒排索引中的词元。
  • 分词器:分析器的一个组件,它将文本分割成单独的词元(通常是单词)并记录其位置的元数据。
  • 词元过滤器:分析器的最终组件,它在分词后修改、添加或删除词元。示例包括小写转换、停用词删除和同义词添加。
  • 词元:在文本分析过程中由分词器创建的文本单元。词元可以被词元过滤器修改,并包含文本分析过程中使用的元数据。
  • 词项:直接存储在倒排索引中并用于搜索操作期间匹配的数据值。词项具有最少的关联元数据。
  • 字符过滤器:分析器的第一个组件,它通过在分词之前添加、删除或修改字符来处理原始文本。
  • 归一化器:一种特殊的分析器,无需分词即可处理文本。它只能执行字符级操作,不能修改整个词元。
  • 词干提取:将单词还原为其词根或基本形式(称为词干)的过程。

搜索和查询概念

  • 查询:向 OpenSearch 发出的请求,描述您正在数据中搜索的内容。
  • 查询子句:查询中的单个条件,指定匹配文档的标准。
  • 过滤器:一个查询组件,用于查找精确匹配而不进行评分。
  • 过滤上下文:过滤上下文中的查询子句会提出问题:“文档是否与查询子句匹配?”
  • 查询上下文:查询上下文中的查询子句会提出问题:“文档与查询子句的匹配程度如何?”
  • 全文搜索:分析和匹配文本字段的搜索,考虑单词形式的变化。
  • 关键词搜索:需要精确文本匹配的搜索。
  • 查询领域特定语言 (DSL):OpenSearch 的主要查询语言,用于创建复杂、可定制的搜索。
  • 查询字符串查询语言:一种简化的查询语法,可用于 URL 参数。
  • Dashboards 查询语言 (DQL):一种简单的基于文本的查询语言,专门用于在 OpenSearch Dashboards 中过滤数据。
  • 管道处理语言 (PPL):一种使用管道语法(|)链接命令进行数据处理和分析的查询语言。主要用于 OpenSearch 中的可观测性用例。
  • 相关性得分:表示文档与查询匹配程度的数字。
  • 聚合:根据搜索查询分析和汇总数据的一种方式。

向量搜索概念

请参阅向量搜索概念

高级概念

以下部分介绍了更高级的 OpenSearch 概念。

更新生命周期

更新操作的生命周期包括以下步骤

  1. 主分片接收到一个更新并将其写入分片的事务日志(translog)。translog 在更新被确认之前会被刷新到磁盘(随后进行 fsync)。这保证了持久性。
  2. 该更新还会传递给 Lucene 索引写入器,后者将其添加到内存缓冲区中。
  3. 刷新操作时,Lucene 索引写入器将内存缓冲区刷新到磁盘(每个缓冲区都成为一个新的 Lucene 段),并在生成的段文件上打开一个新的索引读取器。此时,更新可供搜索。
  4. 刷新操作时,分片对 Lucene 段执行 fsync。由于段文件是更新的持久化表示,因此不再需要 translog 来提供持久性,因此可以从 translog 中清除更新。

Translog

当文档写入 translog 且 translog 刷新到磁盘时,索引或批量调用会响应,从而确保更新的持久性。直到执行刷新操作后,更新才能对搜索请求可见。

刷新

OpenSearch 会定期执行刷新操作,将内存中的 Lucene 索引中的文档写入文件。这些文件不保证持久性,因为未执行 fsync。刷新使文档可供搜索。

刷新

刷新操作使用 fsync 将文件持久化到磁盘,确保持久性。刷新确保仅存储在 translog 中的数据记录在 Lucene 索引中。OpenSearch 根据需要执行刷新,以确保 translog 不会变得过大。

合并

在 OpenSearch 中,分片是一个 Lucene 索引,由(或段文件)组成。段存储索引数据且不可变。较小的段会定期合并为较大的段。合并减少了每个分片的总段数,释放了磁盘空间,并提高了搜索性能。最终,段达到合并策略中指定的最大大小,并且不再合并为更大的段。合并策略还指定了合并执行的频率。