Class CheckIndex
- java.lang.Object
-
- org.apache.lucene.index.CheckIndex
-
public class CheckIndex extends Object
Basic tool and API to check the health of an index and write a new segments file that removes reference to problematic segments.As this tool checks every byte in the index, on a large index it can take quite a long time to run.
- WARNING: This API is experimental and might change in incompatible ways in the next release.
- Please make a complete backup of your index before using this to fix your index!
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
CheckIndex.Status
Returned fromcheckIndex()
detailing the health and status of the index.
-
Constructor Summary
Constructors Constructor Description CheckIndex(Directory dir)
Create a new CheckIndex on the directory.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description CheckIndex.Status
checkIndex()
Returns aCheckIndex.Status
instance detailing the state of the index.CheckIndex.Status
checkIndex(List<String> onlySegments)
Returns aCheckIndex.Status
instance detailing the state of the index.void
fixIndex(CheckIndex.Status result)
Repairs the index using previously returned result fromcheckIndex()
.static void
main(String[] args)
Command-line interface to check and fix an index.void
setInfoStream(PrintStream out)
Set infoStream where messages should go.
-
-
-
Constructor Detail
-
CheckIndex
public CheckIndex(Directory dir)
Create a new CheckIndex on the directory.
-
-
Method Detail
-
setInfoStream
public void setInfoStream(PrintStream out)
Set infoStream where messages should go. If null, no messages are printed
-
checkIndex
public CheckIndex.Status checkIndex() throws IOException
Returns aCheckIndex.Status
instance detailing the state of the index.As this method checks every byte in the index, on a large index it can take quite a long time to run.
WARNING: make sure you only call this when the index is not opened by any writer.
- Throws:
IOException
-
checkIndex
public CheckIndex.Status checkIndex(List<String> onlySegments) throws IOException
Returns aCheckIndex.Status
instance detailing the state of the index.- Parameters:
onlySegments
- list of specific segment names to checkAs this method checks every byte in the specified segments, on a large index it can take quite a long time to run.
WARNING: make sure you only call this when the index is not opened by any writer.
- Throws:
IOException
-
fixIndex
public void fixIndex(CheckIndex.Status result) throws IOException
Repairs the index using previously returned result fromcheckIndex()
. Note that this does not remove any of the unreferenced files after it's done; you must separately open anIndexWriter
, which deletes unreferenced files when it's created.WARNING: this writes a new segments file into the index, effectively removing all documents in broken segments from the index. BE CAREFUL.
WARNING: Make sure you only call this when the index is not opened by any writer.
- Throws:
IOException
-
main
public static void main(String[] args) throws IOException, InterruptedException
Command-line interface to check and fix an index.Run it like this:
java -ea:org.apache.lucene... org.apache.lucene.index.CheckIndex pathToIndex [-fix] [-segment X] [-segment Y]
-fix
: actually write a new segments_N file, removing any problematic segments-segment X
: only check the specified segment(s). This can be specified multiple times, to check more than one segment, eg-segment _2 -segment _a
. You can't use this with the -fix option.
WARNING:
-fix
should only be used on an emergency basis as it will cause documents (perhaps many) to be permanently removed from the index. Always make a backup copy of your index before running this! Do not run this tool on an index that is actively being written to. You have been warned!Run without -fix, this tool will open the index, report version information and report any exceptions it hits and what action it would take if -fix were specified. With -fix, this tool will remove any segments that have issues and write a new segments_N file. This means all documents contained in the affected segments will be removed.
This tool exits with exit code 1 if the index cannot be opened or has any corruption, else 0.
- Throws:
IOException
InterruptedException
-
-