版本: 8.6-8.9
简而言之,当Elasticsearch查询中存在重复的join键时会出现此错误。join键用于在父子关系中链接文档。存在重复的join键会导致混淆和错误结果。要解决此问题,请确保每个join键都是唯一的。您可以通过在索引之前检查数据,或使用脚本自动生成唯一的join键来实现这一点。此外,还要检查您的查询,确保它们没有创建重复的join键。
日志上下文 #
日志 “Join keys must be used only once; found duplicates: [{}]” 的类名是 LogicalPlanBuilder.java. 我们从Elasticsearch源代码中提取了以下内容,供那些寻求深入上下文的人参考:
Source src = source(joinTermCtx.by != null ? joinTermCtx.by : joinTermCtx);
StringJoiner duplicates = new StringJoiner(";");
for (String duplicate : duplicateKeyNames) {
duplicates.add(duplicate);
}
throw new ParsingException(src; "Join keys must be used only once; found duplicates: [{}]"; duplicates.toString());
}
} if (queries.size() < 2) {
throw new ParsingException(source; "A sample requires a minimum of 2 queries; found [{}]"; queries.size());





