版本: 8.1-8.9
简要来说,当Elasticsearch无法在指定目录中找到segments文件时,就会发生此错误。这个文件至关重要,因为它包含了关于索引中segments的信息。该文件的缺失可能是由于意外删除或损坏造成的。要解决此问题,您可以从备份中恢复segments文件。如果备份不可用,您可能需要重建索引。此外,确保Elasticsearch对目录具有必要的读/写权限。定期备份数据可以防止将来出现此类问题。
日志上下文
日志"no segments* file found in " + directory + “: files: “的类名是 OldSegmentInfos.java。 我们从Elasticsearch源代码中提取了以下内容,供那些寻求深入上下文的人参考:
if (infoStream != null) {
message("directory listing gen=" + gen);
} if (gen == -1) {
throw new IndexNotFoundException("no segments* file found in " + directory + ": files: " + Arrays.toString(files));
} else if (gen > lastGen) {
String segmentFileName = IndexFileNames.fileNameFromGeneration(IndexFileNames.SEGMENTS, "", gen); try {
T t = doBody(segmentFileName);





