python-3.x - ElasticSearch 别名的名称限制?
问题描述
我正在尝试使用 python 脚本创建一个包含 3 个别名的索引模板。我最初尝试这样做是成功的,但我最终更改了其中一个别名的名称,并且我看到了一些奇怪的行为。我的一个别名已被命名all-definitions
,我将其更改为definitions-all
. 当我这样做时,我收到了来自 ES 的 200 响应,一切似乎都很好——但是当我去查询我的别名时,它返回了一个index_not_found_exception
错误。如果我然后运行,GET /_cat/aliases
我会看到我创建的其他两个索引,但没有definitions-all
。我玩了一下名字,结果如下:
definitions-al
已创建definitions-call
已创建test-all
已创建definition-all
未创建definitions-alls
未创建definitions-all-test
未创建definitions-allofthem
未创建
据我所知,我是否有某种形式的definition
(复数化与否)包含其中-all
的某处 - 不会创建索引。再次 - 当我创建模板/别名时没有错误回来,只有 200 响应。我用来创建模板的 Python 脚本如下:
url = '%s:%d/_template/tmpl_definitions' % (args.host, args.port)
tmpl = {
"index_patterns": ["definitions*"],
"aliases": {
"definitions-all": {},
"definitions-active": {
"filter": {
"bool": {
"must_not": {
"exists": {
"field": "deleted_timestamp"
}
}
}
}
},
"definitions-archived": {
"bool": {
"filter": {
"exists": {
"field": "deleted_timestamp"
}
}
}
}
}
}
resp = requests.put(url, json=tmpl, verify=not args.insecure)
definitions-active
并definitions-active
完全按照我的预期行事。在我的脚本中,我首先创建模板,然后创建基础definitions
索引。为了测试这些名称中的每一个,我采取了以下步骤:
- 删除现有模板
- 删除所有现有的定义* 索引。
- 运行创建模板和索引的脚本。
我还注意到,如果我从上面获取模板并通过 Kibana 手动运行它,则会创建模板但根本不会创建别名 - 无论名称如何。不确定那是什么意思?
我是 ES 的新手,所以我不确定我是否在这里遗漏了一些明显的东西,但我完全感到困惑。关于如何在 ES 中命名别名是否有限制?如果没有 - 谁能明白为什么我会看到我上面描述的行为?我应该选择一个不同的名字并忘记这整个混乱吗?
注意:我在本地 docker 实例上运行 ElasticSearch 7.12.0,并且使用的是 Python 3.9.1。
解决方案
推荐阅读
- php - 在分组产品表中显示产品大小 - Magento
- flutter - How to add multiple ListTile in end drawer without scrolling in flutter?
- c# - 在 C# 中以交互方式运行 C++ Windows 服务
- azure - 可用性测试:是否可以在启用 AAD 的情况下对端点进行 HTTP-ping?
- wpf - 在 dxg:GridControl 的 GridColumn 中执行编辑模板后,显示模板中的控件失去价值
- java - 通过 server.xml 的 Tomcat 映射上下文在 Tomcat 8.5 中不起作用
- c# - 从图像 src 中删除查询字符串参数
- java - 从 postgres 中的 json 字符串中选择特定值
- c - 如何在 C 中解码主要和次要版本的半字节?
- android - 像what'sapp聊天一样显示日期,我想在订单列表之前显示日期