ElasticSearch Python 索引和别名创建
ElasticSearch Python Index and Alias Creation
我正在使用 Python ElasticSearch DSL 库来连接 ElasticSearch 集群。
我使用库通过基础 class 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
我发送给它的任何请求。
我做错了什么?
在这里找到了我要找的东西:
https://github.com/elastic/elasticsearch-dsl-py/issues/600
事实证明,此时弹性 dsl 在内部获取 "too confusing",以便他们使用别名进行正确的配置。他们建议,既然消费者拥有所有部件,请手动构建结构,而不是让 DocType.init()
为您构建它。
我正在使用 Python ElasticSearch DSL 库来连接 ElasticSearch 集群。
我使用库通过基础 class 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
我发送给它的任何请求。
我做错了什么?
在这里找到了我要找的东西:
https://github.com/elastic/elasticsearch-dsl-py/issues/600
事实证明,此时弹性 dsl 在内部获取 "too confusing",以便他们使用别名进行正确的配置。他们建议,既然消费者拥有所有部件,请手动构建结构,而不是让 DocType.init()
为您构建它。