--- title: "设置 WatcherField ENCRYPTION KEY SETTING getKey 必须在 keystore 中设置 - 如何解决此 Elasticsearch 异常" date: 2026-01-30 lastmod: 2026-01-30 description: "当 Elasticsearch 中 Watcher 功能的加密密钥未在 keystore 中设置时会出现此错误。需要使用 elasticsearch-keystore add 命令添加加密密钥并重启 Elasticsearch。" tags: ["Watcher", "加密密钥", "Keystore", "安全配置", "异常处理"] summary: "版本: 7.3-8.9 简而言之,当 Elasticsearch 中 Watcher 功能的加密密钥未在 keystore 中设置时,就会出现此错误。keystore 是一个用于存储密码和加密密钥等敏感设置的安全位置。要解决此问题,你需要将加密密钥添加到 Elasticsearch keystore 中。你可以通过使用 ‘elasticsearch-keystore add’ 命令后跟密钥名称来实现。添加密钥后,你需要重启 Elasticsearch 以使更改生效。 日志上下文 # 日志 “setting [” + WatcherField.ENCRYPTION_KEY_SETTING.getKey() + “] must be set in keystore” 的类名是 CryptoService.java. 我们从 Elasticsearch 源代码中提取了以下内容,供那些寻求深入上下文的人使用: throw new IllegalArgumentException("invalid key length [" + keyLength + "]. value must be a multiple of 8"); } try (InputStream in = WatcherField.ENCRYPTION_KEY_SETTING.get(settings)) { if (in == null) { throw new ElasticsearchException("setting [" + WatcherField." --- > **版本:** 7.3-8.9 简而言之,当 Elasticsearch 中 Watcher 功能的加密密钥未在 keystore 中设置时,就会出现此错误。keystore 是一个用于存储密码和加密密钥等敏感设置的安全位置。要解决此问题,你需要将加密密钥添加到 Elasticsearch keystore 中。你可以通过使用 'elasticsearch-keystore add' 命令后跟密钥名称来实现。添加密钥后,你需要重启 Elasticsearch 以使更改生效。 日志上下文 ----------- 日志 "setting [" + WatcherField.ENCRYPTION\_KEY\_SETTING.getKey() + "] must be set in keystore" 的类名是 [CryptoService.java.](https://www.geeksforgeeks.org/java-lang-class-class-java-set-1/) 我们从 Elasticsearch 源代码中提取了以下内容,供那些寻求深入上下文的人使用: ```java throw new IllegalArgumentException("invalid key length [" + keyLength + "]. value must be a multiple of 8"); } try (InputStream in = WatcherField.ENCRYPTION_KEY_SETTING.get(settings)) { if (in == null) { throw new ElasticsearchException("setting [" + WatcherField.ENCRYPTION_KEY_SETTING.getKey() + "] must be set in keystore"); } SecretKey systemKey = readSystemKey(in); try { encryptionKey = encryptionKey(systemKey; keyLength; keyAlgorithm); } catch (NoSuchAlgorithmException nsae) { ```