`
dwj147258
  • 浏览: 193854 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

es近实时搜索原理

 
阅读更多

1.

 随着按段(per-segment)搜索的发展, 一个新的文档从索引到可被搜索的延迟显著降低了。新文档在几分钟之内即可被检索,但这样还是不够快。

磁盘在这里成为了瓶颈。 提交(Commiting)一个新的段到磁盘需要一个 fsync 来确保段被物理性地写入磁盘,这样在断电的时候就不会丢失数据。 但是 fsync 操作代价很大; 如果每次索引一个文档都去执行一次的话会造成很大的性能问题。

我们需要的是一个更轻量的方式来使一个文档可被搜索,这意味着 fsync 要从整个过程中被移除。

在Elasticsearch和磁盘之间是文件系统缓存。 像之前描述的一样, 在内存索引缓冲区( 图 19 “在内存缓冲区中包含了新文档的 Lucene 索引” )中的文档会被写入到一个新的段中( 图 20 “缓冲区的内容已经被写入一个可被搜索的段中,但还没有进行提交” )。 但是这里新段会被先写入到文件系统缓存--这一步代价会比较低,稍后再被刷新到磁盘--这一步代价比较高。不过只要文件已经在缓存中, 就可以像其它文件一样被打开和读取了。

图 19. 在内存缓冲区中包含了新文档的 Lucene 索引

A Lucene index with new documents in the in-memory buffer

 

Lucene 允许新段被写入和打开--使其包含的文档在未进行一次完整提交时便对搜索可见。 这种方式比进行一次提交代价要小得多,并且在不影响性能的前提下可以被频繁地执行。

图 20. 缓冲区的内容已经被写入一个可被搜索的段中,但还没有进行提交

The buffer contents have been written to a segment, which is searchable, but is not yet commited

 

refresh API编辑

在 Elasticsearch 中,写入和打开一个新段的轻量的过程叫做 refresh 。 默认情况下每个分片会每秒自动刷新一次。这就是为什么我们说 Elasticsearch 是  实时搜索: 文档的变化并不是立即对搜索可见,但会在一秒之内变为可见。

这些行为可能会对新用户造成困惑: 他们索引了一个文档然后尝试搜索它,但却没有搜到。这个问题的解决办法是用 refresh API 执行一次手动刷新:

POST /_refresh 
POST /blogs/_refresh 

刷新(Refresh)所有的索引。

只刷新(Refresh) blogs 索引。

提示

尽管刷新是比提交轻量很多的操作,它还是会有性能开销。 当写测试的时候, 手动刷新很有用,但是不要在生产环境下每次索引一个文档都去手动刷新。 相反,你的应用需要意识到 Elasticsearch 的近实时的性质,并接受它的不足。

并不是所有的情况都需要每秒刷新。可能你正在使用 Elasticsearch 索引大量的日志文件, 你可能想优化索引速度而不是近实时搜索, 可以通过设置 refresh_interval , 降低每个索引的刷新频率:

PUT /my_logs
{
  "settings": {
    "refresh_interval": "30s" 
  }
}

每30秒刷新 my_logs 索引。

refresh_interval 可以在既存索引上进行动态更新。 在生产环境中,当你正在建立一个大的新索引时,可以先关闭自动刷新,待开始使用该索引时,再把它们调回来:

PUT /my_logs/_settings
{ "refresh_interval": -1 } 

PUT /my_logs/_settings
{ "refresh_interval": "1s" } 

关闭自动刷新。

每秒自动刷新。

小心

refresh_interval 需要一个 持续时间 值, 例如 1s (1 秒) 或 2m (2 分钟)。 一个绝对值 1 表示的是 1毫秒 --无疑会使你的集群陷入瘫痪。

分享到:
评论

相关推荐

    Elasticsearch实战与原理解析 源代码.zip

    Elasticsearch是一个开源的全文搜索引擎,它以分布式、RESTful接口和实时性为特点,广泛应用于数据搜索、分析和监控。这份"**Elasticsearch实战与原理解析 源代码**"的压缩包文件提供了关于这个强大工具的实践案例和...

    Elasticsearch基础架构与原理 数据索引与文档管理 Elasticsearch查询语言基础 高级搜索技巧与过滤 集群管

    Elasticsearch基础架构与原理 数据索引与文档管理 Elasticsearch查询语言基础 高级搜索技巧与过滤 集群管理与优化 数据映射与类型 分布式搜索与分析 Elasticsearch安全机制 监控与日志分析 数据导入与导出策略 ...

    ElasticSearch工作原理.pptx

    本文章以PPT的形式,详细展示了elastic search的工作原理、存储、及注意事项,如shard分片原理及设计、相关插件、与solr比较

    elasticsearch 8.11.3 windows安装包

    Elasticsearch 为所有类型的数据提供近乎实时的搜索和分析。无论您拥有结构化或非结构化文本、数字数据还是地理空间数据,Elasticsearch 都能以支持快速搜索的方式高效地存储和索引它。您可以超越简单的数据检索和...

    Elasticsearch大数据搜索引擎-2018出版 高清带书签

    4. **近实时搜索**:由于Lucene的实时更新机制,Elasticsearch具有近实时搜索特性。 ### 五、系统优化与扩展应用 1. **性能优化**:包括内存分配、硬件选择、索引设置等,以提高查询速度和降低资源消耗。 2. **...

    Elasticsearch原理解析

    Elasticsearch,作为一个开源的分布式全文搜索引擎,广泛应用于日志分析、实时监控、数据检索等多个领域。它以其强大的搜索性能、高可扩展性和易用性,深受开发者喜爱。本文将深入解析Elasticsearch的核心原理,帮助...

    Elasticsearch-深入理解索引原理

    Elasticsearch-深入理解索引原理 Elasticsearch 中索引(Index)的概念是非常重要的,它是 Elasticsearch 存储数据的基本单元。索引是一个具有类似特性的文档的集合,类比传统的关系型数据库领域来说,索引相当于 ...

    Elasticsearch数据库全套教程+安装部署+框架原理+开发调用+性能调优等

    Elasticsearch数据库:Elasticsearch在实时日志分析中的应用.pdf Elasticsearch数据库:Elasticsearch在电子商务搜索中的实践.pdf Elasticsearch数据库:Elasticsearch基础架构与原理.pdf Elasticsearch数据库:...

    浅入深出ElasticSearch构建高性能搜索架构.docx

    本章节将聚焦于如何构建一个高效、稳定的ElasticSearch搜索架构。 1. **集群设计**:根据业务需求和数据量,设计合理的集群规模,包括节点数量、分片数量等。 2. **高可用方案**:采用多种策略确保系统的高可用性,...

    elasticsearch windows 7.17.16 解压安装包

    Elasticsearch 为所有类型的数据提供近乎实时的搜索和分析。无论您拥有结构化或非结构化文本、数字数据还是地理空间数据,Elasticsearch 都能以支持快速搜索的方式高效地存储和索引它。您可以超越简单的数据检索和...

    elasticsearch 7.17.16 linux 解压安装包

    Elasticsearch 为所有类型的数据提供近乎实时的搜索和分析。无论您拥有结构化或非结构化文本、数字数据还是地理空间数据,Elasticsearch 都能以支持快速搜索的方式高效地存储和索引它。您可以超越简单的数据检索和...

    elasticsearch-8.5.0.jar

    Elasticsearch 是一个分布式、高扩展、高实时的搜索与数据分析引擎。它能很方便的使大量数据具有搜索、分析和探索的能力。充分利用Elasticsearch的水平伸缩性,能使数据在生产环境变得更有价值。Elasticsearch 的...

    elasticsearch未授权访问 漏洞修复

    Elasticsearch 是一个流行的开源全文搜索引擎,常用于大数据分析和实时数据检索。然而,如果没有正确配置安全设置,它可能会暴露于未授权访问的风险中,这可能导致数据泄露或恶意操作。本文将详细讲解如何修复 ...

    Elasticsearch技术解析与实战+Elasticsearch权威指南

    Elasticsearch是一款强大的开源搜索引擎,基于Lucene库构建,广泛应用于大数据分析、日志收集、实时搜索等领域。本文将深入解析Elasticsearch的核心概念、架构原理,并结合实战案例,帮助你全面掌握这一技术。 首先...

    ElasticSearch官方测试数据

    Elasticsearch(ES)是一种流行的开源全文搜索引擎,它基于Lucene库构建,被广泛用于大数据分析、日志聚合、实时搜索和索引等场景。官方提供的测试数据集是检验Elasticsearch功能、性能和稳定性的关键资源,可以帮助...

    elasticsearch windows 7.10.0 解压安装包

    Elasticsearch 为所有类型的数据提供近乎实时的搜索和分析。无论您拥有结构化或非结构化文本、数字数据还是地理空间数据,Elasticsearch 都能以支持快速搜索的方式高效地存储和索引它。您可以超越简单的数据检索和...

    elasticsearch-head 可视化界面

    4. **培训教育**:向初学者展示Elasticsearch的工作原理和操作方式。 ### 注意事项 1. **版本兼容性**:确保Elasticsearch-Head版本与运行的Elasticsearch版本相匹配,否则可能无法正常工作。 2. **安全警告**:...

Global site tag (gtag.js) - Google Analytics