我最近将 AWS OpenSearch 1.3 升级到 2.5。所有索引都是使用 1.3 创建的,新索引将使用 2.5 创建。根据 OpenSearch 升级指南,节点和索引与之前的主要版本向后兼容:https://opensearch.org/docs/2.0/install-and-configure/upgrade-opensearch/index/.
下次升级到 OpenSearch 3.x 时,我需要将所有 1.3 索引重新索引为 2.5,然后才能进行升级,而不会冒不兼容的风险。我现在可以将它们重新索引为 2.5,但没有必要,因为它们(许多)是时间序列的,然后可能会被删除。然而,1.3 指数中的一些指数可能仍然存在。我怎么知道哪个是哪个?
谁有更多信息,请分享。
到目前为止我所做的研究是:
获取/some_index/_settings
{
"some_index": {
"settings": {
"index": {
"creation_date": "1655146986159",
"number_of_shards": "5",
"number_of_replicas": "1",
"uuid": "vsSCEn6XSgCCB2tn0eWVUg",
"version": {
"created": "135238227"
},
"provided_name": "some_index"
}
}
}
}
没有任何地方写着2.5:
获取/
{
"name": "2043c84f0bd1df9061a44af7a05b5f30",
"cluster_name": "some_cluster",
"cluster_uuid": "OZvWRYh7SSemqAsvl-dW8w",
"version": {
"number": "7.10.2",
"build_type": "tar",
"build_hash": "unknown",
"build_date": "2023-03-22T09:38:59.330594Z",
"build_snapshot": false,
"lucene_version": "9.4.2",
"minimum_wire_compatibility_version": "7.10.0",
"minimum_index_compatibility_version": "7.0.0"
},
"tagline": "The OpenSearch Project: https://opensearch.org/"
}
我的想法是 .index.version.created 表示创建索引的 OpenSearch 版本,但我不知道如何解释前 2 位数字之外的内容。有趣的是,用 2.5 创建的新索引有
"created": "136267827"
。
解释 ElasticSearch .index.version.created 非常容易: https://discuss.elastic.co/t/which-version-of-es-was-an-index-created-with/157904
您走在正确的道路上,具有
index.version.created
值。然而,查看源代码,这个值需要经过一个小的算术运算(按位异或)才能弄清楚它是什么,即你需要用0x08000000
来屏蔽它。
所以:
135238227 ^ 0x08000000 = 1020499 => Opensearch 1.2.4
136267827 ^ 0x08000000 = 2050099 => 开放搜索 2.5.0
如果您告诉 OpenSearch 您是人类,则使版本易于阅读所需的额外操作将自动执行。 您可以使用
GET /some_index/_settings?human
来实现。