llama_index [Bug]:关于ElasticsearchStore中的ServerDisconnectedError(服务器断开连接)

kr98yfug  于 6个月前  发布在  ElasticSearch
关注(0)|答案(3)|浏览(76)

Bug描述

当有超过10个查询同时运行时,AsyncElasticsearch客户端可能会引发一个ServerDisconnectedError(Server disconnected)异常,如下所示:
elastic_transport.ConnectionError: Connection error caused by: ConnectionError(Connection error caused by: ServerDisconnectedError(Server disconnected))

版本

llama-index=0.10.14
llama-index-vector-stores-elasticsearch=0.1.5

重现步骤

llama_index.vector_stores.elasticsearch.base模块中aquery方法的一个潜在问题可能是这个问题的原因,如下所示:

async with self.client as client:
            response = await client.search(
                index=self.index_name,
                **es_query,
                size=query.similarity_top_k,
                _source={"excludes": [self.vector_field]},
            )

我尝试单独运行代码块并手动查询,但它仍然生成相同的异常。
然而,在使用异步客户端直接而不使用async with时,什么都不会发生:

response = await self.client.search(
                index=self.index_name,
                **es_query,
                size=query.similarity_top_k,
                _source={"excludes": [self.vector_field]},
            )

所以,我认为async with是多余的?

相关日志/回溯

  • 无响应*
9q78igpj

9q78igpj1#

嘿 @Hspix,又回到另一个技术谜题了,我看到!😄很高兴再次与您联系。
感谢您将此问题提请我们的注意。您遇到的 ServerDisconnectedError 通常是由于客户端与 Elasticsearch 服务器之间的网络连接问题,或者服务器意外关闭连接引起的。它与 async with 的使用无关。
在这里使用的 async with 语句用于管理 Elasticsearch 客户端( self.client )的异步上下文。它确保客户端在操作完成后被正确获取和释放,这对于异步编程中管理资源是一种良好的做法。
要解决 ServerDisconnectedError ,您可能需要查看以下领域:

  • 连接池和限制:确保 Elasticsearch 客户端已配置为处理足够数量的并发连接。这可能涉及调整连接池大小。
  • Elasticsearch 服务器配置:服务器本身可能对它可以处理的连接数有限制,或者可能在一段时间后配置为关闭空闲连接。请检查服务器的配置以了解其连接处理方式。
  • 网络问题:网络不稳定或配置问题也可能导致此类断开连接。请确保客户端和服务器之间的网络稳定且配置正确。
  • 客户端版本和兼容性:请确保您正在使用的 Elasticsearch 客户端版本与 Elasticsearch 服务器版本兼容。不兼容性可能导致意外行为。

至于 llama_index.vector_stores.elasticsearch.base 模块中的 aquery 方法,它是一个用于查询 Elasticsearch 矢量存储的异步方法。它用于执行各种类型的查询,包括基本向量相似度搜索、文本搜索、混合查询、带过滤器的查询以及删除和重新查询。该方法设计为异步使用,在其调用之前用 await 关键字标记,使其适合在异步 Python 应用程序或框架中使用。
如果在检查这些领域后问题仍然存在,请考虑为您的查询实施重试机制。如果您需要进一步的帮助,请提供有关您的 Elasticsearch 服务器配置的更多详细信息以及重现问题的确切步骤。

来源

关于 Dosu

此响应旨在节省您的时间并使您受益。它不是 精确解决方案,而是您自己研究的起点。
帮助我更有用!如果您觉得有用请留下一个 👍 如果没有帮助的话请留下一个 👎 。
如果您想继续对话,请以 @dosu-bot 开头回复。

r6l8ljro

r6l8ljro2#

如果你知道修复方法或者有能力修复,我强烈建议你提交PR。

2izufjch

2izufjch3#

Bug描述

当有超过10个查询同时运行时,AsyncElasticsearch客户端可能会引发一个ServerDisconnectedError(Server disconnected)异常,如下所示:
elastic_transport.ConnectionError: Connection error caused by: ConnectionError(Connection error caused by: ServerDisconnectedError(Server disconnected))

版本

llama-index=0.10.14 llama-index-vector-stores-elasticsearch=0.1.5

重现步骤

llama_index.vector_stores.elasticsearch.base模块中aquery方法的一个潜在问题可能是这个问题的原因,如下所示:

async with self.client as client:
            response = await client.search(
                index=self.index_name,
                **es_query,
                size=query.similarity_top_k,
                _source={"excludes": [self.vector_field]},
            )

我尝试单独运行代码块并手动查询,但它仍然生成相同的异常。
然而,在使用没有async with的异步客户端时什么也不发生:

response = await self.client.search(
                index=self.index_name,
                **es_query,
                size=query.similarity_top_k,
                _source={"excludes": [self.vector_field]},
            )

所以,我认为async with是多余的?

相关日志/回溯

  • 无响应*

me too

相关问题