【发布时间】:2024-05-21 07:00:01
【问题描述】:
我正在使用 Python ElasticSearch DSL 库与 ElasticSearch 集群进行交互。
我使用库通过基类elasticsearch_dsl.DocType 提供的文档视图模型,并且之前使用DocType.init() 创建我的索引:
import elasticsearch_dsl as dsl
class SomeDocument(dsl.DocType):
class Meta:
doc_type = some_document
index = some_document
instance = SomeDocument()
instance.init()
但现在我想为 Elastic 初始化时在此处创建的索引添加别名,并更改索引的分片数量。我想出的代码是:
import elasticsearch_dsl as dsl
class SomeDocument(dsl.DocType):
class Meta:
doc_type = some_document
index = some_document
instance = SomeDocument()
doc_index = dsl.Index('some_document_v1')
doc_index.aliases(some_document={})
if not doc_index.exists():
doc_index.create()
我希望SomeDocument ViewModel 使用some_document 索引来处理它的请求,尽管some_document 现在是指向索引some_document_v1 的别名。
当我尝试运行此代码时,我得到:
index some_document_v1 already exists
即使我在调用index.create() 之前检查了index.exists()。如果我清除其数据的 ElasticSearch 实例,服务器就会崩溃并响应400 Bad Request 对我发送给它的任何请求。
我在这里做错了什么?
【问题讨论】:
标签: python python-3.x elasticsearch elasticsearch-dsl