mirror of
https://github.com/honeymoose/OpenSearch.git
synced 2025-03-27 10:28:28 +00:00
parent
473473e867
commit
1fc37e5954
@ -122,14 +122,20 @@ public class IndicesSegmentResponse extends BroadcastOperationResponse implement
|
||||
|
||||
builder.startObject(Fields.SEGMENTS);
|
||||
for (Segment segment : shardSegments) {
|
||||
builder.startObject(segment.name());
|
||||
builder.field(Fields.GENERATION, segment.generation());
|
||||
builder.field(Fields.NUM_DOCS, segment.numDocs());
|
||||
builder.field(Fields.DELETED_DOCS, segment.deletedDocs());
|
||||
builder.field(Fields.SIZE, segment.size().toString());
|
||||
builder.field(Fields.SIZE_IN_BYTES, segment.sizeInBytes());
|
||||
builder.field(Fields.COMMITTED, segment.committed());
|
||||
builder.field(Fields.SEARCH, segment.search());
|
||||
builder.startObject(segment.getName());
|
||||
builder.field(Fields.GENERATION, segment.getGeneration());
|
||||
builder.field(Fields.NUM_DOCS, segment.getNumDocs());
|
||||
builder.field(Fields.DELETED_DOCS, segment.getDeletedDocs());
|
||||
builder.field(Fields.SIZE, segment.getSize().toString());
|
||||
builder.field(Fields.SIZE_IN_BYTES, segment.getSizeInBytes());
|
||||
builder.field(Fields.COMMITTED, segment.isCommitted());
|
||||
builder.field(Fields.SEARCH, segment.isSearch());
|
||||
if (segment.getVersion() != null) {
|
||||
builder.field(Fields.VERSION, segment.getVersion());
|
||||
}
|
||||
if (segment.isCompound() != null) {
|
||||
builder.field(Fields.COMPOUND, segment.isCompound());
|
||||
}
|
||||
builder.endObject();
|
||||
}
|
||||
builder.endObject();
|
||||
@ -166,5 +172,7 @@ public class IndicesSegmentResponse extends BroadcastOperationResponse implement
|
||||
static final XContentBuilderString SIZE_IN_BYTES = new XContentBuilderString("size_in_bytes");
|
||||
static final XContentBuilderString COMMITTED = new XContentBuilderString("committed");
|
||||
static final XContentBuilderString SEARCH = new XContentBuilderString("search");
|
||||
static final XContentBuilderString VERSION = new XContentBuilderString("version");
|
||||
static final XContentBuilderString COMPOUND = new XContentBuilderString("compound");
|
||||
}
|
||||
}
|
@ -64,7 +64,7 @@ public class ShardSegments extends BroadcastShardOperationResponse implements It
|
||||
public int getNumberOfCommitted() {
|
||||
int count = 0;
|
||||
for (Segment segment : segments) {
|
||||
if (segment.committed()) {
|
||||
if (segment.isCommitted()) {
|
||||
count++;
|
||||
}
|
||||
}
|
||||
@ -74,7 +74,7 @@ public class ShardSegments extends BroadcastShardOperationResponse implements It
|
||||
public int getNumberOfSearch() {
|
||||
int count = 0;
|
||||
for (Segment segment : segments) {
|
||||
if (segment.search()) {
|
||||
if (segment.isSearch()) {
|
||||
count++;
|
||||
}
|
||||
}
|
||||
|
@ -252,6 +252,17 @@ public abstract class StreamInput extends InputStream {
|
||||
return readByte() != 0;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public final Boolean readOptionalBoolean() throws IOException {
|
||||
byte val = readByte();
|
||||
if (val == 2) {
|
||||
return null;
|
||||
}
|
||||
if (val == 1) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Resets the stream.
|
||||
|
@ -236,6 +236,7 @@ public abstract class StreamOutput extends OutputStream {
|
||||
|
||||
private static byte ZERO = 0;
|
||||
private static byte ONE = 1;
|
||||
private static byte TWO = 2;
|
||||
|
||||
/**
|
||||
* Writes a boolean.
|
||||
@ -244,6 +245,14 @@ public abstract class StreamOutput extends OutputStream {
|
||||
writeByte(b ? ONE : ZERO);
|
||||
}
|
||||
|
||||
public void writeOptionalBoolean(@Nullable Boolean b) throws IOException {
|
||||
if (b == null) {
|
||||
writeByte(TWO);
|
||||
} else {
|
||||
writeByte(b ? ONE : ZERO);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Forces any buffered output to be written.
|
||||
*/
|
||||
|
@ -19,6 +19,7 @@
|
||||
|
||||
package org.elasticsearch.index.engine;
|
||||
|
||||
import org.elasticsearch.common.Nullable;
|
||||
import org.elasticsearch.common.io.stream.StreamInput;
|
||||
import org.elasticsearch.common.io.stream.StreamOutput;
|
||||
import org.elasticsearch.common.io.stream.Streamable;
|
||||
@ -35,6 +36,8 @@ public class Segment implements Streamable {
|
||||
public long sizeInBytes = -1;
|
||||
public int docCount = -1;
|
||||
public int delDocCount = -1;
|
||||
public String version = null;
|
||||
public Boolean compound = null;
|
||||
|
||||
Segment() {
|
||||
}
|
||||
@ -44,68 +47,45 @@ public class Segment implements Streamable {
|
||||
this.generation = Long.parseLong(name.substring(1), Character.MAX_RADIX);
|
||||
}
|
||||
|
||||
public String name() {
|
||||
return this.name;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name();
|
||||
}
|
||||
|
||||
public long generation() {
|
||||
return this.generation;
|
||||
return this.name;
|
||||
}
|
||||
|
||||
public long getGeneration() {
|
||||
return this.generation;
|
||||
}
|
||||
|
||||
public boolean committed() {
|
||||
return this.committed;
|
||||
}
|
||||
|
||||
public boolean isCommitted() {
|
||||
return this.committed;
|
||||
}
|
||||
|
||||
public boolean search() {
|
||||
return this.search;
|
||||
}
|
||||
|
||||
public boolean isSearch() {
|
||||
return this.search;
|
||||
}
|
||||
|
||||
public int numDocs() {
|
||||
return this.docCount;
|
||||
}
|
||||
|
||||
public int getNumDocs() {
|
||||
return this.docCount;
|
||||
}
|
||||
|
||||
public int deletedDocs() {
|
||||
return this.delDocCount;
|
||||
}
|
||||
|
||||
public int getDeletedDocs() {
|
||||
return this.delDocCount;
|
||||
}
|
||||
|
||||
public ByteSizeValue size() {
|
||||
public ByteSizeValue getSize() {
|
||||
return new ByteSizeValue(sizeInBytes);
|
||||
}
|
||||
|
||||
public ByteSizeValue getSize() {
|
||||
return size();
|
||||
}
|
||||
|
||||
public long sizeInBytes() {
|
||||
return sizeInBytes;
|
||||
}
|
||||
|
||||
public long getSizeInBytes() {
|
||||
return sizeInBytes();
|
||||
return this.sizeInBytes;
|
||||
}
|
||||
|
||||
public String getVersion() {
|
||||
return version;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public Boolean isCompound() {
|
||||
return compound;
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -140,6 +120,8 @@ public class Segment implements Streamable {
|
||||
docCount = in.readInt();
|
||||
delDocCount = in.readInt();
|
||||
sizeInBytes = in.readLong();
|
||||
version = in.readOptionalString();
|
||||
compound = in.readOptionalBoolean();
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -150,5 +132,7 @@ public class Segment implements Streamable {
|
||||
out.writeInt(docCount);
|
||||
out.writeInt(delDocCount);
|
||||
out.writeLong(sizeInBytes);
|
||||
out.writeOptionalString(version);
|
||||
out.writeOptionalBoolean(compound);
|
||||
}
|
||||
}
|
@ -21,13 +21,11 @@ package org.elasticsearch.index.engine.robin;
|
||||
|
||||
import com.google.common.collect.Lists;
|
||||
import org.apache.lucene.index.*;
|
||||
import org.apache.lucene.index.SegmentInfos.FindSegmentsFile;
|
||||
import org.apache.lucene.search.IndexSearcher;
|
||||
import org.apache.lucene.search.Query;
|
||||
import org.apache.lucene.search.SearcherFactory;
|
||||
import org.apache.lucene.search.SearcherManager;
|
||||
import org.apache.lucene.store.AlreadyClosedException;
|
||||
import org.apache.lucene.store.Directory;
|
||||
import org.elasticsearch.ElasticSearchException;
|
||||
import org.elasticsearch.ElasticSearchIllegalStateException;
|
||||
import org.elasticsearch.cluster.routing.operation.hash.djb.DjbHashFunction;
|
||||
@ -65,7 +63,6 @@ import org.elasticsearch.indices.warmer.IndicesWarmer;
|
||||
import org.elasticsearch.indices.warmer.InternalIndicesWarmer;
|
||||
import org.elasticsearch.threadpool.ThreadPool;
|
||||
|
||||
import java.io.FileNotFoundException;
|
||||
import java.io.IOException;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.ConcurrentMap;
|
||||
@ -1176,6 +1173,8 @@ public class RobinEngine extends AbstractIndexShardComponent implements Engine {
|
||||
segment.search = true;
|
||||
segment.docCount = reader.reader().numDocs();
|
||||
segment.delDocCount = reader.reader().numDeletedDocs();
|
||||
segment.version = info.info.getVersion();
|
||||
segment.compound = info.info.getUseCompoundFile();
|
||||
try {
|
||||
segment.sizeInBytes = info.sizeInBytes();
|
||||
} catch (IOException e) {
|
||||
@ -1198,6 +1197,8 @@ public class RobinEngine extends AbstractIndexShardComponent implements Engine {
|
||||
segment.committed = true;
|
||||
segment.docCount = info.info.getDocCount();
|
||||
segment.delDocCount = info.getDelCount();
|
||||
segment.version = info.info.getVersion();
|
||||
segment.compound = info.info.getUseCompoundFile();
|
||||
try {
|
||||
segment.sizeInBytes = info.sizeInBytes();
|
||||
} catch (IOException e) {
|
||||
@ -1214,7 +1215,7 @@ public class RobinEngine extends AbstractIndexShardComponent implements Engine {
|
||||
Arrays.sort(segmentsArr, new Comparator<Segment>() {
|
||||
@Override
|
||||
public int compare(Segment o1, Segment o2) {
|
||||
return (int) (o1.generation() - o2.generation());
|
||||
return (int) (o1.getGeneration() - o2.getGeneration());
|
||||
}
|
||||
});
|
||||
|
||||
@ -1341,7 +1342,7 @@ public class RobinEngine extends AbstractIndexShardComponent implements Engine {
|
||||
}
|
||||
return indexWriter;
|
||||
}
|
||||
|
||||
|
||||
public static final String INDEX_TERM_INDEX_INTERVAL = "index.term_index_interval";
|
||||
public static final String INDEX_TERM_INDEX_DIVISOR = "index.term_index_divisor";
|
||||
public static final String INDEX_INDEX_CONCURRENCY = "index.index_concurrency";
|
||||
|
@ -185,19 +185,19 @@ public abstract class AbstractSimpleEngineTests {
|
||||
|
||||
segments = engine.segments();
|
||||
assertThat(segments.size(), equalTo(1));
|
||||
assertThat(segments.get(0).committed(), equalTo(false));
|
||||
assertThat(segments.get(0).search(), equalTo(true));
|
||||
assertThat(segments.get(0).numDocs(), equalTo(2));
|
||||
assertThat(segments.get(0).deletedDocs(), equalTo(0));
|
||||
assertThat(segments.get(0).isCommitted(), equalTo(false));
|
||||
assertThat(segments.get(0).isSearch(), equalTo(true));
|
||||
assertThat(segments.get(0).getNumDocs(), equalTo(2));
|
||||
assertThat(segments.get(0).getDeletedDocs(), equalTo(0));
|
||||
|
||||
engine.flush(new Engine.Flush());
|
||||
|
||||
segments = engine.segments();
|
||||
assertThat(segments.size(), equalTo(1));
|
||||
assertThat(segments.get(0).committed(), equalTo(true));
|
||||
assertThat(segments.get(0).search(), equalTo(true));
|
||||
assertThat(segments.get(0).numDocs(), equalTo(2));
|
||||
assertThat(segments.get(0).deletedDocs(), equalTo(0));
|
||||
assertThat(segments.get(0).isCommitted(), equalTo(true));
|
||||
assertThat(segments.get(0).isSearch(), equalTo(true));
|
||||
assertThat(segments.get(0).getNumDocs(), equalTo(2));
|
||||
assertThat(segments.get(0).getDeletedDocs(), equalTo(0));
|
||||
|
||||
|
||||
ParsedDocument doc3 = testParsedDocument("3", "3", "test", null, -1, -1, testDocumentWithTextField(), Lucene.STANDARD_ANALYZER, B_3, false);
|
||||
@ -206,32 +206,32 @@ public abstract class AbstractSimpleEngineTests {
|
||||
|
||||
segments = engine.segments();
|
||||
assertThat(segments.size(), equalTo(2));
|
||||
assertThat(segments.get(0).generation() < segments.get(1).generation(), equalTo(true));
|
||||
assertThat(segments.get(0).committed(), equalTo(true));
|
||||
assertThat(segments.get(0).search(), equalTo(true));
|
||||
assertThat(segments.get(0).numDocs(), equalTo(2));
|
||||
assertThat(segments.get(0).deletedDocs(), equalTo(0));
|
||||
assertThat(segments.get(0).getGeneration() < segments.get(1).getGeneration(), equalTo(true));
|
||||
assertThat(segments.get(0).isCommitted(), equalTo(true));
|
||||
assertThat(segments.get(0).isSearch(), equalTo(true));
|
||||
assertThat(segments.get(0).getNumDocs(), equalTo(2));
|
||||
assertThat(segments.get(0).getDeletedDocs(), equalTo(0));
|
||||
|
||||
assertThat(segments.get(1).committed(), equalTo(false));
|
||||
assertThat(segments.get(1).search(), equalTo(true));
|
||||
assertThat(segments.get(1).numDocs(), equalTo(1));
|
||||
assertThat(segments.get(1).deletedDocs(), equalTo(0));
|
||||
assertThat(segments.get(1).isCommitted(), equalTo(false));
|
||||
assertThat(segments.get(1).isSearch(), equalTo(true));
|
||||
assertThat(segments.get(1).getNumDocs(), equalTo(1));
|
||||
assertThat(segments.get(1).getDeletedDocs(), equalTo(0));
|
||||
|
||||
engine.delete(new Engine.Delete("test", "1", newUid("1")));
|
||||
engine.refresh(new Engine.Refresh(true));
|
||||
|
||||
segments = engine.segments();
|
||||
assertThat(segments.size(), equalTo(2));
|
||||
assertThat(segments.get(0).generation() < segments.get(1).generation(), equalTo(true));
|
||||
assertThat(segments.get(0).committed(), equalTo(true));
|
||||
assertThat(segments.get(0).search(), equalTo(true));
|
||||
assertThat(segments.get(0).numDocs(), equalTo(1));
|
||||
assertThat(segments.get(0).deletedDocs(), equalTo(1));
|
||||
assertThat(segments.get(0).getGeneration() < segments.get(1).getGeneration(), equalTo(true));
|
||||
assertThat(segments.get(0).isCommitted(), equalTo(true));
|
||||
assertThat(segments.get(0).isSearch(), equalTo(true));
|
||||
assertThat(segments.get(0).getNumDocs(), equalTo(1));
|
||||
assertThat(segments.get(0).getDeletedDocs(), equalTo(1));
|
||||
|
||||
assertThat(segments.get(1).committed(), equalTo(false));
|
||||
assertThat(segments.get(1).search(), equalTo(true));
|
||||
assertThat(segments.get(1).numDocs(), equalTo(1));
|
||||
assertThat(segments.get(1).deletedDocs(), equalTo(0));
|
||||
assertThat(segments.get(1).isCommitted(), equalTo(false));
|
||||
assertThat(segments.get(1).isSearch(), equalTo(true));
|
||||
assertThat(segments.get(1).getNumDocs(), equalTo(1));
|
||||
assertThat(segments.get(1).getDeletedDocs(), equalTo(0));
|
||||
}
|
||||
|
||||
@Test
|
||||
|
Loading…
x
Reference in New Issue
Block a user