网站建设合同是否缴纳印花税app开发公司属于什么行业
2026/5/18 21:53:10 网站建设 项目流程
网站建设合同是否缴纳印花税,app开发公司属于什么行业,腾讯云搭建wordpress,网站哪个做的好在分布式搜索领域#xff0c;Elasticsearch 几乎是“快”的代名词。 你是否想过下边这样的场景#xff1a; 当我们在日志系统中查询刚刚报错的堆栈信息时#xff0c;为什么面对亿级数据量#xff0c;ES 依然能在毫秒级返回结果#xff1f; 更神奇的是#xff0c;为什么数…在分布式搜索领域Elasticsearch 几乎是“快”的代名词。你是否想过下边这样的场景当我们在日志系统中查询刚刚报错的堆栈信息时为什么面对亿级数据量ES 依然能在毫秒级返回结果更神奇的是为什么数据刚刚写入仅仅过了不到一秒就能被检索到是的更准确地说ES 一直宣称的特性是“近实时” NRTNear Real-Time。那么为什么是“近”实时呢这个字面上的“一字之差”背后隐藏着 Elasticsearch 为了实现超高速搜索所做的精妙架构权衡。01超快查询的基石Lucene 和倒排索引在说“近实时”之前我们必须先理解 ES 为什么“快”。如果底层存储结构不支持极速查找那么无论上层怎么优化最后都是徒劳。ES 的快核心在于其底层的Lucene 引擎以及一种被称为倒排索引Inverted Index的数据结构。Apache LuceneLucene 是由 Apache 软件基金会维护的一个开源的 Java 库用于全文检索和信息检索。Lucene 提供了强大的低级别的索引和搜索功能例如文本分词、倒排索引创建、相关性计算等。Lucene 主要功能包括文本分词和分析将文本切分成词条便于索引和搜索。倒排索引创建倒排索引结构便于快速检索包含特定词条的文档。查询解析支持多种查询布尔查询、短语查询、范围查询等并计算文档与查询的相关性分数。排序和打分根据查询与文档的匹配程度得分对结果进行排序。全文检索高效实现了全文搜索的复杂算法。Lucene 是一个库不是一个独立的搜索服务或引擎需要开发者编写代码来与 Lucene 交互并构建索引和查询。Elasticsearch 就是一个构建在 Lucene 之上的分布式搜索引擎它封装了 Lucene 的功能提供了更多的特性和用户友好的 REST API便于开发和管理。Elasticsearch 的核心搜索、索引、分析等功能实际上是由 Lucene 提供的换句话说Lucene 是 Elasticsearch 的核心引擎。倒排索引传统的关系型数据库如 MySQL通常采用正向索引即通过文档 ID行 ID去查找该文档行的内容。这种方式用ID的键位做查询条件速度很快但对于全文检索来说就很尴尬比如like %name%这样就走不到索引了需要全表查询。倒排索引则完全颠倒了这种关系从上图可以看到它的核心结构是一个从词项Term到包含该词项的文档列表Posting List的映射。当用户搜索一个词时ES/Lucene 直接在词典中定位该词然后立即获取包含该词的文档 ID 列表无需扫描任何文档。这使得全文本匹配查询的速度几乎是 O(1) 级别的。02从写入到可查近实时的诞生Elasticsearch 的近实时特性是其数据持久化和可搜索性机制之间博弈的结果。比如当我们向 ES 发送下边一条写入文档请求时数据并不会立刻存入磁盘也不会立刻被搜索到它会经历以下几个阶段POST /logs/_doc{level:INFO,message:order created,timestamp:2025-12-12T10:00:00}ES 写入过程图1、写入 Index Buffer当写入请求到达 ES 节点后数据首先会被写入Indexing Buffer索引缓冲区内存按 shard 维度维护此时这部分数据就在内存里。但是它是不可被搜索的。2、同时写入 Transaction log为了保证数据的持久性和可靠性ES 采用了一种预写日志Write-Ahead Log, WAL机制即 Translog。Transaction log 的作用确保即使系统发生硬件故障、电源中断或进程崩溃已接收但尚未提交到 Lucene 永久索引的文档也不会丢失。如何工作每个索引操作CRUD都会在内存缓冲区写入的同时追加写入到分片所在的磁盘上的 Translog 文件中。默认情况下Translog 是在每次索引、删除、更新操作后同步 (fysnc) 刷新到磁盘的。持久性保证只要文档写入了 Translog 并同步到磁盘它就被认为是持久的即使 Lucene 索引本身还没有写入磁盘。3、Refresh变为可查的关键一步要让内存中的文档变成可搜索的状态就必须执行Refresh刷新操作。这是从“写入”到“可查”的关键一步。刷新机制Refresh 操作会将内存缓冲区Index Buffer中的文档清空并将其转换为一个新的、内部的Lucene 段 (Segment)文件。Segment 段的打开这个新创建的段会被打开并立即对搜索可见。此时 Segment 仍然在操作系统的文件系统缓存中尚未同步到永久磁盘存储。延迟的来源默认情况下Elasticsearch 的 index.refresh_interval 设置为 1 秒。这意味着从文档被索引到它能被搜索到通常会有 0 到 1 秒的延迟。这里是理解近实时 NRT 的核心Segment 是 Lucene 的最小索引单元。一旦数据变成了 Segment它就拥有了倒排索引结构可以被搜索了。这个 Segment 被写入了操作系统的 FileSystem Cache文件系统缓存而不是物理磁盘。写入 文件系统缓存的速度是非常快的内存操作不需要物理磁盘磁头寻道。正是因为 ES 允许数据先存在于 OS Cache 中即可被搜索才实现了“秒级”可见。4、Flush真正的落盘随着时间推移Translog 越来越大。ES 需要定期进行 Flush 操作Flush 通常包含以下内容执行刷新首先进行一次 Refresh确保所有内存中的文档都变成可搜索的段。强制同步调用 Lucene 的 commit 操作强制将所有内存中的段数据即索引文件同步 (fsync) 到磁盘的永久存储。这时 Segment 才写入磁盘清空 Translog在所有段文件安全写入磁盘后Translog 文件会被清空并重新开始记录。Flush 的频率Flush 操作比 Refresh 频率低得多通常每 30 分钟自动执行一次或在 Translog 文件达到一定大小时触发。正是通过这种内存Index Buffer/Translog - Refresh - Flush的三步走策略ES 巧妙地实现了高吞吐、高可靠、且近实时的索引能力。03Segment 的不可变性与合并ES 的查询性能还有一个重要前提Segment。Segment 特性Segment 是不可变Immutable的索引文件包含完整的倒排索引结构一旦生成只读不写Segment的上述特性带来了极大的优势无需加锁查询线程在读取段时无需担心数据会被其他写入线程修改因此无需使用复杂的锁机制大大提高了并发查询效率。高效缓存操作系统可以将不可变的段文件尤其是倒排索引的核心结构完美地加载到文件系统缓存中。Segment 合并由于 refresh_interval 默认 1 秒意味着每秒都会产生一个新的小 Segment。时间一长文件句柄会被耗尽查询也会因为要扫描太多 Segment 而变慢。ES 后台会有一个独立线程悄悄地进行Merge 合并操作选取一些小的 Segments将它们合并成一个大的 Segment关键点在合并过程中真正剔除掉那些被标记为“已删除”的文档合并完成后删除旧的小 SegmentsMerge 操作不影响性能但是合并是一个 I/O 密集型操作会占用磁盘带宽。但这是一个必要的后台任务确保索引结构保持优化从而保证前端查询的速度。04分布式架构带来的查询加速另外Elasticsearch 作为一个分布式系统这种架构天生会带来一些查询加速的效果。1、分片Shards与副本Replicas分片 (Shards)ES 将一个索引Index分解成多个独立的 Lucene 索引称为主分片 (Primary Shards)。这些分片被分布在集群的不同节点上。并行查询当一个搜索请求到达时ES 会将查询分发到所有相关的主分片和副本分片上这些分片并行地在其本地数据上执行查询。横向扩展增加节点数量和分片数量意味着可以同时处理更多的查询和更多的数据是实现大规模高性能查询的直接途径。2、两阶段查询阶段一查询 (Query Phase)接收请求任何节点都可以接收用户的搜索请求该节点成为协调节点 (Coordinating Node)。分发查询协调节点将搜索请求发送给涉及索引的所有分片通常是主分片或副本分片中负载较轻的一个。本地执行每个分片独立地执行查询找出符合条件的文档。返回局部结果每个分片只返回文档的 ID (Document ID) 和计算出的相关性得分。此阶段只查索引不取完整文档阶段二取回 (Fetch Phase)收集排序协调节点接收到所有分片返回的 Document ID 和 _score 得分列表。全局排序协调节点对这些局部结果进行全局排序确定最终需要返回给用户的 N 个文档。批量取回协调节点根据最终排序结果向持有这些文档 ID 的分片发起一个高效的批量取回 (Multi-Get) 请求。返回结果分片将完整的文档内容返回给协调节点协调节点最终将完整的结果集返回给用户。通过两阶段查询这种“先定位、后取数”的设计机制ES 将繁重的搜索和评分工作分散到各个节点并行处理而协调节点只负责轻量级的排序和数据聚合从而在分布式环境中实现了极高的查询效率。05写在最后通过以上的介绍我们会知道 ES 非常适合日志分析、搜索系统、可观测性平台等场景但并不适用于强一致事务和严格实时读写。“从写入到可查”的过程体现了 Elasticsearch 架构的精妙它牺牲了严格的“实时”性以换取惊人的索引吞吐量和查询速度。通过 Lucene 的底层优化和自身的分布式协调能力Elasticsearch 成为了构建现代、高性能搜索和分析平台的首选工具。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询