首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

创建Elasticsearch索引后立即执行读取操作导致异常

的原因是,Elasticsearch在索引创建后需要一定的时间来进行分片分配和数据同步。如果立即执行读取操作,可能会导致数据尚未完全同步或分片尚未分配完成,从而导致异常。

为了解决这个问题,可以采取以下几种方法:

  1. 使用Elasticsearch提供的等待机制:在创建索引后,可以使用refresh参数来控制何时使新索引可见。默认情况下,Elasticsearch会每秒自动刷新一次索引,但可以通过设置refresh_interval参数来调整刷新间隔。在创建索引后,可以手动调用refresh API来立即刷新索引,使其可见。
  2. 使用Elasticsearch提供的异步机制:可以将读取操作延迟一段时间,以确保索引的分片分配和数据同步完成。可以使用Elasticsearch的异步搜索API来执行读取操作,该API会等待索引准备就绪后再执行搜索操作。
  3. 使用Elasticsearch的索引生命周期管理(ILM)功能:ILM功能可以自动管理索引的生命周期,包括创建、刷新、分片分配等操作。可以配置ILM策略,在索引创建后等待一段时间后再执行读取操作,以确保索引的完全可用性。
  4. 使用Elasticsearch的索引别名功能:可以创建一个索引别名,将读取操作指向该别名。在创建索引后,等待一段时间后再将别名指向新索引,这样读取操作就可以顺利执行,而不会受到索引创建过程的影响。

总结起来,为了避免在创建Elasticsearch索引后立即执行读取操作导致异常,可以使用Elasticsearch提供的等待机制、异步机制、索引生命周期管理功能或索引别名功能来控制读取操作的时机,以确保索引的完全可用性。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

腾讯时序数据库之准实时揭秘

但只要sengment文件被写入cache就可以被打开和查询,在短时间内就可以搜到,而不用执行一个flush也就是fsync操作。其请求处理流程如下图: ? 下面通过一个案例来验证进行观察分析。...然而执行了提交操作也不能保证能被搜索到,因为Lucene使用一个叫Searcher的抽象类来执行索引读取。...事务日志 在ElasticSearch索引实现中Apache Lucene能保证索引的一致性,但这不能保证当向索引中写数据失败时不损失数据(例如,磁盘空间不足,设备异常)。...另外一个问题是频繁提交(触发一个索引段的创建操作,同时也可能触发索引段的合并)会导致性能问题。ElasticSearch使用事务日志来解决这些问题,事务日志保存所有未提交的事务。...为了演示实时读取,连续执行下面两条语句,第2条语句查询时指定索引文档id来查询,会从事务日志中读取最新的数据。

1.4K40

Elasticsearch 源码探究 001——故障探测和恢复机制

此设置具有三个有效值. all , 节点上的所有操作(读和写操作)都会被拒绝。这也适用于 API 集群状态读取或写入操作 write (默认) 写入操作被拒绝。根据最后已知的集群配置,读取操作成功。...这种情况可能会导致部分读取过时数据,因为该节点可能与集群的其余部分隔离。 metadata_write, 仅元数据写入操作(例如映射更新、路由表更改)被拒绝,但常规索引操作继续工作。...根据最后已知的集群配置,读取和写入操作成功。...值得注意的是,客户端不断使用非挂掉机器的ip 访问es, 只有选举期间是无法写入的,其他时间都可以写入,但是无法更新集群状态(比如创建索引等),因为这个时候master已经挂了。...:单个 active master 挂掉 1.访问故障节点的请求都失败探测active 故障之前: 2.可对已有索引进行读写,但是无法更新集群状态,比如创建索引等选举期间:3.其他读请求可以成功进行,但是可能会读到旧数据

50610
  • 如何监控Elasticsearch

    数据节点:默认情况下,每个节点都是以分片形式存储数据的数据节点,这些节点执行索引,搜索以及聚合数据相关的操作。...为文档创建索引时,Elasticsearch会自动为每个字段创建倒排索引;倒排索引将字段映射到包含这些字段的文档。...默认值为每个索引五个主分片,每个主分片一个副本。在索引创建,主分片的数量无法更改,因此在选择数量时要谨慎,否则后面可能需要重新建立索引。副本的数量可以在后面根据需求更新。...可以用translog帮助恢复可能在刷新之间丢失的操作。日志每5秒提交到磁盘;或在索引,删除,更新或批量请求成功,日志提交到磁盘。流程如下 ?...主机指标 I/O:在创建,查询和合并段时,Elasticsearch会对磁盘进行大量写入和读取操作

    1.5K30

    Elasticsearch 学习总结 - 相关配置补充说明

    分片的数量只能在索引创建前指定,并且索引创建不能更改。 primary shard 主分片,每个文档都存储在一个分片中,当你存储一个文档的时候,系统会首先存储在主分片中,然后会复制到不同的副本中。...discovery.zen.no_master_block 设置无master时,哪些操作将被拒绝。all 所有节点的读、写操作都将被拒绝。write 写操作将被拒绝,可以读取最后已知的集群配置。...field执行聚合时,才会加载,而且是field-level加载的一个index的一个field,所有doc都会被加载,而不是少数doc不是index-time创建,是query-time创建 fielddata...但是加载太多的数据到内存会导致垃圾回收(gc)缓慢, 因为JVM试着发现堆里面的额外空间,甚至导致OutOfMemory (即OOM)异常。...过分乐观的设置可能会导致潜在的OOM异常,从而导致整 个节点挂掉。从另一方面来说,一个过分保守的值将会简单的返回一个查询异常,这个异常会被应用处理。 异常总比挂掉好。

    1.2K30

    深入理解Elasticsearch写入过程

    Elasticsearch 是当前主流的搜索引擎,其具有扩展性好,查询速度快,查询结果近实时等优点,本文将对Elasticsearch的写操作进行分析。...非实时 将文件写入lucence并不能立即被检索,需要等待lucene生成一个完整的segment才能被检索 数据存储不可靠 写入lucene的数据不会立即被持久化到磁盘,如果服务器宕机,那存储在内存中的数据将会丢失...[5d9e257641030151a7105235d81a156f.png] 2.2 近实时性-refresh操作 当一个文档写入Lucene是不能被立即查询到的,Elasticsearch提供了一个...另外为了防止读取文档过程执行更新前有其他线程修改了文档,ES增加了版本机制,当执行更新操作时发现当前文档的版本与预期不符,则会重新获取文档再更新。 3....自动创建索引 判断索引是否存在,如果开启了自动创建则自动创建,否则报错 设置routing 获取请求URL或mapping中的_routing,如果没有则使用_id, 如果没有指定_id则ES会自动生成一个全局唯一

    2.9K22

    【ES三周年】ElasticSearch在微信金融领域实践

    操作系统操作系统层面上首先设置好ElasticSearch需要系统配置,比如调整文件描述符个数、创建进程个数至合理值,关闭swap等。...其次,根据当前ElasticSearch使用方式做一些特殊优化处理。其中包括针对操作系统因高阶内存不足导致的抖动做了一定优化。...高阶内存不足,一方面是因为内存难以回收,主要是因为ElasticSearch使用mmap读取文件,导致操作系统难以回收这部分PageCache内存,此处对ElasticSearch读取文件方式进行了优化...,针对经常读取的问题采用mmap方式加快读取,不经常读取文件采用nio读取,来加快PageCache的回收;另一方面是连续内存不充足,导致即使有足够的内存也难以使用,针对这种问题处理是留出一定大小内存供系统使用...其他涉及可用性优化项:新索引创建优化:在单机有多块磁盘情况下,新创建索引可能会分配到同一个磁盘上,导致单盘IO过高;此处优化是磁盘分配时会根据整个节点上磁盘分配情况再进行分片的分配,从而保证新索引分片的均衡

    1.2K51

    全文检索的极致之选:Elasticsearch完全指南

    索引暂存其实也是一个建立索引的过程。待索引暂存区达到一定数量,暂存区中的索引和旧索引进行合并 原地更新策略:新文档被立即解析,解析结果立刻被加到旧索引中。...(2) 查找:在读取完成,就可以使用 FST 进行查找操作了。...索引数据的刷新:为了确保新写入的索引数据能够立即对外可见,Elasticsearch 会触发一次索引数据的刷新(refresh)操作。...但如果该字段的 store 属性为 false,则执行 update 操作,该字段的原始值将被清空。...3. reindex 失效,原本可以修改的 mapping 部分参数将无法修改,并且无法升级索引Elasticsearch 中,有一些情况下会导致索引失效,进而影响 reindex 操作执行

    92710

    Elasticsearch文档读写模型实现原理

    一旦在主服务器上成功执行操作,主服务器就必须确保数据最终一致,即使由于在副本上执行失败或由于网络问题导致操作无法到达副本(或阻止副本响应)造成的。...4、Elasticsearch主备模型隐含含义 在正常操作下,每个读取操作一次为每个相关的复制组执行一次。只有在失败条件下,同一个复制组的多个副本执行相同的搜索。...由于数据首先是在主分片上进行索引,然后才转发请求到副本,在转发之前数据已经在主分片上发生了变化,所以在并发读时,如果读请求被转发到主分片节点上,那该数据在它被确认之前(主分片再等待所有副本全部执行成功...5、ElasticSearch 读写模型异常时可造成的影响 在失败的情况下,以下是可能的: 1个分片节点可能减慢整个集群的索引性能 因为在每次操作期间(索引),主分片在本地成功执行索引动作,会转发请求到期复制分片节点上...在这一点上,操作已经被索引到主节点,并且可以通过并发读取读取

    54430

    Elasticsearch 使用误区之二——频繁更新文档

    在使用 Elasticsearch 时,频繁更新文档是一种常见误区。这不仅影响性能,还可能导致系统资源的浪费。 理解 Elasticsearch 的文档更新机制对于优化性能至关重要。...关于 Elasticsearch 更新操作,常见问题如下: ——https://t.zsxq.com/bDxwL 1、频繁更新的挑战 在关系型数据库中,更新操作在事务完成立即生效,查询结果可以立刻反映变化...2.2 读取并更新 找到文档Elasticsearch 会将文档加载到内存中,并根据请求中的更新内容修改文档数据。这包括字段的增加、修改或删除。...继续刚才的示例:更新操作执行一次,截图如下:_version 由 1 变成 2。 更新查看分段: 文档数显示为1(如下图),但其实是两个不同的分段(如上图)。...建议1:设置一个合理的批量更新间隔,比如每隔 5 分钟更新一次,而不是每次用户操作立即更新。 建议2:使用消息队列收集用户操作,定时批量更新。 4.2.

    39710

    elasticsearch文档读写模型

    Elasticsearch的数据复制模型基于 主-备模型,在这个模型下,分片分为主分片和副本分片,主分片是所有索引操作的主要入口点,它负责验证并确保所有操作是正确的,一旦主分片接受了索引操作,主分片在索引操作执行成功还要负责将操作复制到其他副本...2.写模型 Elasticsearch中的每个索引操作首先通过路由解析到replication group,这一操作通常基于文档ID,一旦replication group被确定索引操作将在内部转发到...如果有多个副本,则并行执行操作 一旦所有副本成功执行操作并响应给主服务器,主服务器就会确认成功完成对客户端的请求 2.1 故障处理 在索引的过程可能会出现各种各样的异常情况,例如:1.磁盘损坏;2....一旦在主分片上成功执行操作,主分片就必须处理在副本上执行操作时存在的潜在故障,这些潜在的故障可能是由副本上的实际故障或由于网络问题导致操作无法到达副本(或阻止副本响应)引起的。...此时,操作已经索引到主分片中,并且可以通过并发读取读取Elasticsearch通过每秒ping一次Master(默认情况下)并在没有Master的情况下拒绝索引操作来减轻这种风险。

    49520

    Elasticsearch 常见的 8 种错误及最佳实践

    如果Elasticsearch无法执行此转换,它将引发“ mapper_parsing_exception无法解析” 异常。 如果此类异常太多会降低索引吞吐量。...2、BulkIndexError 批量索引大型数据集通常更有效。 例如,您可以执行一个批量操作索引 1,000 个文档,而不是使用 1,000 个索引操作。...执行批量操作的过程中,你需要仔细检查:数据类型不匹配和空值匹配等问题。 对于批量 API ,你需要格外警惕,因为即使有数百个肯定的响应,批量中的某些索引请求也可能失败。...最佳实践:在 jvm.option 中添加如下配置重启 Elasticsearch。...9.3 集群速度变慢问题 随着数据规模的扩大,以及操作频繁度的扩展,Elasticsearch 有时会发生意外导致检索响应速度慢,并可能弹出超时报错。

    5.1K30

    elasticsearch迁移最佳实践

    ,会导致数据不一致 注意事项:这种方式需要根据数据量来定下停止写入时间,估算好,操作期间es源集群不能有数据增量、修改的操作 方案三:elastic-dump工具迁移 image.png 介绍:...: 此操作并不能迁移索引的配置如分片数量和副本数量,必须对每个索引单独进行配置的迁移,或者直接在目标集群中将索引创建完毕再迁移数据: elasticdump --input=http://x.x.x.1...工具迁移 image.png 介绍: logstash支持从一个ES集群中读取数据然后写入到另一个ES集群,因此可以使用logstash进行数据迁移 操作配置: input { elasticsearch...集群索引最好提前创建,避免凌晨自动并发生成大量索引导致集群 hang 住,集群异常; 2....索引最好是采用静态 mapping,避免频繁的 mapping 变更导致集群元数据的变更引起集群 hang 住; 3.

    1.3K11

    RedisJson 横空出世,比 ES 快7 倍,惊爆了

    作为起点,我们考虑了 65% 搜索和 35% 读取的场景,这代表了一个常见的现实世界场景,在该场景中,我们执行的搜索/查询比直接读取更多。...65% 搜索、35% 读取和 0% 更新的初始组合也导致 ElasticSearch 和 RedisJSON* 的吞吐量相等。...这些测试变体的目标是了解每个产品如何处理数据的实时更新,我们认为这是事实上的架构目标,即写入立即提交到索引读取始终是最新的。...对数据产生的更新越多,对 ElasticSearch 性能的影响就越大,最终导致读取和搜索速度变慢。...第三步:节点 3 在主分片上执行操作,如果成功,则将请求并行转发到节点 1和节点 2 的副本分片上,等待结果返回。

    85320

    ElasticSearch详解与优化设计

    百度:百度目前广泛使用ElasticSearch作为文本数据分析,采集百度所有服务器上的各类指标数据及用户自定义数据,通过对各种数据进行多维分析展示,辅助定位分析实例异常或业务层面异常。...二,创建索引 调用create或index方法,创建索引。...建议在建完索引执行Optimize,马上将副本数调整过来。 3)分词 分词对于索引的影响可大可小,看自己把握。大家或许认为词库越多,分词效果越好,索引质量越好,其实不然。...严重时可能恶性循环,导致整个集群停工。因此在使用ES的过程中,要知道哪些设置和操作容易造成以上问题,有针对性的予以规避。...heap以外的内存并不会被浪费,操作系统会很开心的利用他们来cache被用读取过的段文件。 Heap分配多少合适?遵从官方建议就没错。 不要超过系统可用内存的一半,并且不要超过32GB。

    1.8K50

    ELK运维文档

    分片中的每个索引操作包含两部分:refresh和flush。 refresh 在索引中添加、更新和删除document,并不能立即被search到。...在主分片的操作完成之后,它需要处理副本分片执行时可能出现的问题,如副本本身的故障或网络原因导致无法连接到副本。...此时已经到达该分片的请求可能会被并行读操作读取到,elasticsearch通过(默认每秒)ping master和在无法连接到master时拒绝索引操作来缓解这个问题。...metric=none 如果因为磁盘问题导致分配失败,可以采用如下策略: 增加磁盘空间 为索引添加生命周期 如果一个索引不再执行操作,可以使用force merge API合并segments 如果一个索引只读...因此如果集群中没有master节点,仍然能进行不会影响集群状态的操作,如从index中读取document,但不能执行索引操作

    78410

    Elasticsearch Document Index API详解、原理与示例

    如果我们尝试索引操作,默认情况下,只要主节点处于激活,则索引操作会在主节点上执行,然后转发到其他复制组。这意味着,即使B和C宕机(主分片在A节点上),索引操作仍然会在主分片上执行。...写操作响应的分片部分(5.1节所示)揭示了复制成功/失败的分片副本的数量,数据在主分片、副本之间数据的最终一致性处理在《Elasticsearch Document API之文档读写概要设计》写模型异常处理部分有相应的处理机制...目前从索引与查询的角度来看,他不会导致性能低下。...false(RefreshPolicy.NONE) 在操作(index,update,delete)执行完毕,直接返回,而不执行刷新,而是依靠Elasticsearch的刷新机制。...wait_for(RefreshPolicy.WAIT_UNTIL) 操作发生,并不立即强制刷新,而是等待刷新的发生,此时会阻塞等待直到超时或刷新事件到达。

    2.9K10

    「ES 排障指南」之 Elasticsearch 集群异常状态分析 —— 集群 YELLOW

    此时执行查询虽然部分数据仍然可以查到,但实际上已经影响到索引读写,需要重点关注。这种情况 Elasticsearch 集群至少一个主分片(以及它的全部副本)都在缺失中。...,副本分片无法分配无需人工干预场景1:写入触发索引创建(INDEX_CREATED) ES 支持在索引不存在的情况下发起对该索引的写入,当对不存在的索引发起写入时,ES 会自动创建索引,并开始自动映射...(put-mapping)不存在的索引字段,这是个很重的操作,会对元数据造成较大压力。...如图:当 URGENT Task过多时,则会导致 HIGH Task 排队,进入 pending 状态优化建议:业务提前预创建索引,而不是让 bulk request 自动触发索引创建(create-index...建议:快照操作有一定性能开销,建议在业务低峰期进行。需要人工干预场景1:磁盘水位问题(ALLOCATION_FAILED)磁盘水位过高会导致 ES 新生分片无法分配,更严重甚至会导致节点离线。

    5.4K200173

    Elasticsearch入门指南:构建强大的搜索引擎(下篇)

    示例 当使用 Elasticsearch 时,您可以通过 RESTful API 与其进行交互。下面是一个基本的示例教程,演示如何创建索引操作文档(增删查改),执行分页查询和聚合查询。...,包括创建索引,添加、获取、更新和删除文档,执行分页查询以及聚合查询。...这可能是由于以下几个原因导致的: 索引刷新机制:默认情况下,Elasticsearch 使用自动索引刷新机制,即数据在索引之后并不立即可用。相反,它会等待一段时间,然后才将数据刷新到内存中。...考虑数据更新和刷新:如果您在对索引进行分页和排序的过程中同时进行了数据更新,可能会导致结果不正确。这是由于Elasticsearch的默认刷新机制,数据更新不会立即可见。...数据更新和刷新:如果在分组查询期间同时进行了数据更新,并且未手动刷新索引,则可能会导致结果不一致。这是因为 Elasticsearch 默认的刷新机制会导致数据更新不立即可见。

    22620
    领券