gpt4 book ai didi

elasticsearch - 如何检查 ElasticSearch 索引是否存在并准备就绪?

转载 作者:行者123 更新时间:2023-12-02 22:12:08 25 4
gpt4 key购买 nike

如何检查索引是否存在并且是否可以在 ElasticSearch 中使用?

我们目前通过运行选择一些文档的查询来检查“indexA”是否存在。如果查询没有返回任何命中,我们假设“indexA”不存在,并创建索引(全新安装)。问题是当服务器重新启动时,我们的应用程序启动速度比 ElasticSearch 快,并且我们得到两个重复的“indexA”,因为当 ElasticSearch 启动时,在“indexA”中搜索文件失败..(我猜索引还没有准备好)

有一个方法:https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-exists.html - 这是否保证为“indexA”返回“true”,即使 ES 正在启动并且索引尚未准备好?

或者我应该使用“status”方法,指定索引名,并检查所有分片的状态是否为“STARTED”?

或者我应该使用这个:https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-recovery.html ElasticSearch 可以进入“恢复模式”吗?这种情况什么时候发生,我们应该如何处理?

还是我应该查看“CatHealth”? .Epoc?

最佳答案

当你说准备好时,你的意思是准备开始搜索吗?

阅读您的问题,听起来您想知道集群的状态,您可以使用 Cluster Health API 来了解集群的状态。

curl -XGET 'http://localhost:9200/_cluster/health?pretty=true

您可以传递查询字符串参数 wait_for_status=green这将等到集群处于给定状态(或直到超时到期,默认情况下为 30 秒)。

根据您在问题中的评论,集群处于黄色状态,因为有 5 个未分配的分片;当使用默认配置运行时,Elasticsearch 创建 5 个主分片和 1 个副本(即每个主分片的副本分片)。由于集群中只有一个节点,副本分片将保持未分配状态,因为 Elasticsearch 不会将它们定位在包含所有主分片的同一节点上,因为这不会提供任何冗余。向集群添加另一个节点将导致 Elasticsearch 将 2 个主分片以及 3 个副本和 2 个副本重定位到新节点上,并将 2 个副本重定位到原始节点上。通过这种分布,一个节点可能会宕机,但不会丢失任何数据。添加另一个节点会将状态更改为绿色,但您将能够使用处于黄色状态的集群。

如果您打算在生产中使用此集群,我强烈建议您至少拥有 2 个节点(最好在不同的机器上),以便您至少拥有一个副本。

关于elasticsearch - 如何检查 ElasticSearch 索引是否存在并准备就绪?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32199546/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com