3

我正在尝试删除类型的映射,但在此之前,我正在检查该类型是否存在,如下面的代码所示:

def delete_mapping(self, doc_type):
    if self.elasticsearch.indices.exists_type(index='my_index', doc_type=doc_type):
        self.elasticsearch.indices.delete_mapping(index='my_index', doc_type=doc_type)

检查类型是否存在的行返回 true,即使对于不存在的类型也是如此。因此,在尝试删除类型的映射时,我在下一行得到了 TypeMissingException。

当我们在 ipython 控制台上运行代码时,一切看起来都很好,但当代码作为异步任务的一部分运行时,就会出现问题。这不会每次都发生,而是在 QA 和生产服务器上随机发生。这两个环境是我们唯一有两个用于弹性搜索的节点的环境,我们在其他环境中看不到问题。

我正在使用 Python 2.7、elasticsearch-py 0.4.4 和 elasticsearch 版本 1.0.1,在 64 位 Linux 上具有两个节点。该代码作为定期 celery 任务运行。

编辑:为问题添加了更多细节。

4

0 回答 0