diff --git a/pom.xml b/pom.xml
index 7f3ecad..eb4330e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -31,7 +31,7 @@
- 0.90.5
+ 0.90.7
diff --git a/src/main/java/crate/elasticsearch/facet/distinct/DistinctDateHistogramFacetParser.java b/src/main/java/crate/elasticsearch/facet/distinct/DistinctDateHistogramFacetParser.java
index f71f0a6..a1b9548 100644
--- a/src/main/java/crate/elasticsearch/facet/distinct/DistinctDateHistogramFacetParser.java
+++ b/src/main/java/crate/elasticsearch/facet/distinct/DistinctDateHistogramFacetParser.java
@@ -3,14 +3,13 @@
import org.elasticsearch.common.collect.ImmutableMap;
import org.elasticsearch.common.collect.MapBuilder;
import org.elasticsearch.common.component.AbstractComponent;
+import org.elasticsearch.common.hppc.ObjectIntOpenHashMap;
import org.elasticsearch.common.inject.Inject;
import org.elasticsearch.common.joda.time.Chronology;
import org.elasticsearch.common.joda.time.DateTimeField;
import org.elasticsearch.common.joda.time.DateTimeZone;
import org.elasticsearch.common.joda.time.MutableDateTime;
import org.elasticsearch.common.settings.Settings;
-import org.elasticsearch.common.trove.impl.Constants;
-import org.elasticsearch.common.trove.map.hash.TObjectIntHashMap;
import org.elasticsearch.common.unit.TimeValue;
import org.elasticsearch.common.xcontent.XContentParser;
import org.elasticsearch.index.fielddata.IndexNumericFieldData;
@@ -34,7 +33,7 @@
public class DistinctDateHistogramFacetParser extends AbstractComponent implements FacetParser {
private final ImmutableMap dateFieldParsers;
- private final TObjectIntHashMap rounding = new TObjectIntHashMap(Constants.DEFAULT_CAPACITY, Constants.DEFAULT_LOAD_FACTOR, -1);
+ private final ObjectIntOpenHashMap rounding = new ObjectIntOpenHashMap();
@Inject
public DistinctDateHistogramFacetParser(Settings settings) {
diff --git a/src/main/java/crate/elasticsearch/facet/distinct/InternalDistinctDateHistogramFacet.java b/src/main/java/crate/elasticsearch/facet/distinct/InternalDistinctDateHistogramFacet.java
index 5d0f257..48e577e 100644
--- a/src/main/java/crate/elasticsearch/facet/distinct/InternalDistinctDateHistogramFacet.java
+++ b/src/main/java/crate/elasticsearch/facet/distinct/InternalDistinctDateHistogramFacet.java
@@ -1,8 +1,9 @@
package crate.elasticsearch.facet.distinct;
-import org.elasticsearch.cache.recycler.CacheRecycler;
+import org.elasticsearch.common.hppc.LongObjectOpenHashMap;
+import org.elasticsearch.common.logging.ESLogger;
+import org.elasticsearch.common.logging.ESLoggerFactory;
import org.elasticsearch.common.recycler.Recycler;
-import org.elasticsearch.common.trove.ExtTLongObjectHashMap;
import org.elasticsearch.common.xcontent.XContentBuilder;
import org.elasticsearch.common.xcontent.XContentBuilderString;
import org.elasticsearch.search.facet.Facet;
@@ -110,6 +111,7 @@ static final class Fields {
@Override
public Facet reduce(ReduceContext context) {
List facets = context.facets();
+
if (facets.size() == 1) {
// we need to sort it
InternalDistinctDateHistogramFacet internalFacet = (InternalDistinctDateHistogramFacet) facets.get(0);
@@ -118,22 +120,26 @@ public Facet reduce(ReduceContext context) {
return internalFacet;
}
- Recycler.V> map = context.cacheRecycler().longObjectMap(-1);
+ Recycler.V> map = context.cacheRecycler().longObjectMap(-1);
for (Facet facet : facets) {
+
InternalDistinctDateHistogramFacet histoFacet = (InternalDistinctDateHistogramFacet) facet;
for (DistinctEntry fullEntry : histoFacet.entries) {
- DistinctEntry current = map.v().get(fullEntry.getTime());
- if (current != null) {
- current.getValues().addAll(fullEntry.getValues());
- } else {
- map.v().put(fullEntry.getTime(), fullEntry);
+ if(fullEntry != null){
+ DistinctEntry current = map.v().get(fullEntry.getTime());
+ if (current != null) {
+ current.getValues().addAll(fullEntry.getValues());
+ } else {
+ map.v().put(fullEntry.getTime(), fullEntry);
+ }
}
+
}
}
// sort
- Object[] values = map.v().internalValues();
+ Object[] values = map.v().values;
Arrays.sort(values, (Comparator) comparatorType.comparator());
List ordered = new ArrayList(map.v().size());
for (int i = 0; i < map.v().size(); i++) {
diff --git a/src/main/java/crate/elasticsearch/facet/distinct/LongDistinctDateHistogramFacetExecutor.java b/src/main/java/crate/elasticsearch/facet/distinct/LongDistinctDateHistogramFacetExecutor.java
index 8c12c04..69a418f 100644
--- a/src/main/java/crate/elasticsearch/facet/distinct/LongDistinctDateHistogramFacetExecutor.java
+++ b/src/main/java/crate/elasticsearch/facet/distinct/LongDistinctDateHistogramFacetExecutor.java
@@ -2,9 +2,9 @@
import org.apache.lucene.index.AtomicReaderContext;
import org.elasticsearch.cache.recycler.CacheRecycler;
+import org.elasticsearch.common.hppc.LongObjectOpenHashMap;
import org.elasticsearch.common.joda.time.MutableDateTime;
import org.elasticsearch.common.recycler.Recycler;
-import org.elasticsearch.common.trove.ExtTLongObjectHashMap;
import org.elasticsearch.index.fielddata.IndexNumericFieldData;
import org.elasticsearch.index.fielddata.LongValues;
import org.elasticsearch.search.facet.FacetExecutor;
@@ -14,6 +14,7 @@
import java.io.IOException;
import java.util.ArrayList;
+import java.util.Arrays;
/**
* Collect the distinct values per time interval.
@@ -27,7 +28,7 @@ public class LongDistinctDateHistogramFacetExecutor extends FacetExecutor {
private MutableDateTime dateTime;
private final long interval;
private final DateHistogramFacet.ComparatorType comparatorType;
- final Recycler.V> entries;
+ final Recycler.V> entries;
private final CacheRecycler cacheRecycler;
public LongDistinctDateHistogramFacetExecutor(IndexNumericFieldData keyIndexFieldData,
@@ -50,7 +51,7 @@ public Collector collector() {
@Override
public InternalFacet buildFacet(String facetName) {
- ArrayList entries1 = new ArrayList(entries.v().valueCollection());
+ ArrayList entries1 = new ArrayList(Arrays.asList(entries.v().values));
entries.release();
return new LongInternalDistinctDateHistogramFacet(facetName, comparatorType, entries1);
@@ -100,11 +101,11 @@ public static class DateHistogramProc extends LongFacetAggregatorBase {
LongValues valueValues;
private final long interval;
private MutableDateTime dateTime;
- final ExtTLongObjectHashMap entries;
+ final LongObjectOpenHashMap entries;
final ValueAggregator valueAggregator = new ValueAggregator();
- public DateHistogramProc(ExtTLongObjectHashMap entries, MutableDateTime dateTime, long interval) {
+ public DateHistogramProc(LongObjectOpenHashMap entries, MutableDateTime dateTime, long interval) {
this.dateTime = dateTime;
this.entries = entries;
this.interval = interval;
@@ -116,11 +117,11 @@ public DateHistogramProc(ExtTLongObjectHashMap 0) {
+ for(Integer i = 0 ; i < totalDocumentEntries ; i++) {
+ dateTime.setMillis(values.nextValue());
onValue(docId, dateTime);
total++;
}
diff --git a/src/main/java/crate/elasticsearch/facet/distinct/LongInternalDistinctDateHistogramFacet.java b/src/main/java/crate/elasticsearch/facet/distinct/LongInternalDistinctDateHistogramFacet.java
index 6913b65..0b71fdc 100644
--- a/src/main/java/crate/elasticsearch/facet/distinct/LongInternalDistinctDateHistogramFacet.java
+++ b/src/main/java/crate/elasticsearch/facet/distinct/LongInternalDistinctDateHistogramFacet.java
@@ -4,12 +4,13 @@
import org.elasticsearch.common.bytes.HashedBytesArray;
import org.elasticsearch.common.io.stream.StreamInput;
import org.elasticsearch.common.io.stream.StreamOutput;
-import org.elasticsearch.common.trove.ExtTLongObjectHashMap;
import org.elasticsearch.search.facet.Facet;
import java.io.IOException;
-import java.util.*;
-import org.elasticsearch.cache.recycler.CacheRecycler;
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
public class LongInternalDistinctDateHistogramFacet extends InternalDistinctDateHistogramFacet {
diff --git a/src/main/java/crate/elasticsearch/facet/distinct/StringDistinctDateHistogramFacetExecutor.java b/src/main/java/crate/elasticsearch/facet/distinct/StringDistinctDateHistogramFacetExecutor.java
index b68e80b..5f1c4c4 100644
--- a/src/main/java/crate/elasticsearch/facet/distinct/StringDistinctDateHistogramFacetExecutor.java
+++ b/src/main/java/crate/elasticsearch/facet/distinct/StringDistinctDateHistogramFacetExecutor.java
@@ -3,9 +3,9 @@
import org.apache.lucene.index.AtomicReaderContext;
import org.apache.lucene.util.BytesRef;
import org.elasticsearch.cache.recycler.CacheRecycler;
+import org.elasticsearch.common.hppc.LongObjectOpenHashMap;
import org.elasticsearch.common.joda.time.MutableDateTime;
import org.elasticsearch.common.recycler.Recycler;
-import org.elasticsearch.common.trove.ExtTLongObjectHashMap;
import org.elasticsearch.index.fielddata.BytesValues;
import org.elasticsearch.index.fielddata.LongValues;
import org.elasticsearch.index.fielddata.plain.PackedArrayIndexFieldData;
@@ -17,6 +17,7 @@
import java.io.IOException;
import java.util.ArrayList;
+import java.util.Arrays;
/**
* Collect the distinct values per time interval.
@@ -30,7 +31,7 @@ public class StringDistinctDateHistogramFacetExecutor extends FacetExecutor {
private MutableDateTime dateTime;
private final long interval;
private final DateHistogramFacet.ComparatorType comparatorType;
- final Recycler.V> entries;
+ final Recycler.V> entries;
public StringDistinctDateHistogramFacetExecutor(PackedArrayIndexFieldData keyIndexFieldData,
PagedBytesIndexFieldData distinctIndexFieldData,
@@ -51,7 +52,7 @@ public Collector collector() {
@Override
public InternalFacet buildFacet(String facetName) {
- ArrayList entries1 = new ArrayList(entries.v().valueCollection());
+ ArrayList entries1 = new ArrayList(Arrays.asList(entries.v().values));
entries.release();
return new StringInternalDistinctDateHistogramFacet(facetName, comparatorType, entries1);
}
@@ -73,7 +74,7 @@ public Collector() {
@Override
public void setNextReader(AtomicReaderContext context) throws IOException {
keyValues = keyIndexFieldData.load(context).getLongValues();
- histoProc.valueValues = distinctIndexFieldData.load(context).getBytesValues();
+ histoProc.valueValues = distinctIndexFieldData.load(context).getBytesValues(false);
}
@Override
@@ -98,11 +99,11 @@ public static class DateHistogramProc {
BytesValues.WithOrdinals valueValues;
private final long interval;
private MutableDateTime dateTime;
- final Recycler.V> entries;
+ final Recycler.V> entries;
final ValueAggregator valueAggregator = new ValueAggregator();
- public DateHistogramProc(Recycler.V> entries, MutableDateTime dateTime, long interval) {
+ public DateHistogramProc(Recycler.V> entries, MutableDateTime dateTime, long interval) {
this.dateTime = dateTime;
this.entries = entries;
this.interval = interval;
@@ -112,10 +113,10 @@ public DateHistogramProc(Recycler.V 0) {
+ for(Integer i = 0 ; i < totalDocumentEntries ; i++) {
+ dateTime.setMillis(values.nextValue());
onValue(docId, dateTime);
total++;
}
diff --git a/src/main/java/crate/elasticsearch/facet/distinct/StringInternalDistinctDateHistogramFacet.java b/src/main/java/crate/elasticsearch/facet/distinct/StringInternalDistinctDateHistogramFacet.java
index 0f43ca5..1989a9c 100644
--- a/src/main/java/crate/elasticsearch/facet/distinct/StringInternalDistinctDateHistogramFacet.java
+++ b/src/main/java/crate/elasticsearch/facet/distinct/StringInternalDistinctDateHistogramFacet.java
@@ -5,7 +5,6 @@
import org.elasticsearch.common.io.stream.StreamInput;
import org.elasticsearch.common.io.stream.StreamOutput;
import org.elasticsearch.common.recycler.Recycler;
-import org.elasticsearch.common.trove.ExtTLongObjectHashMap;
import org.elasticsearch.search.facet.Facet;
import org.elasticsearch.search.facet.InternalFacet;
diff --git a/src/main/java/crate/elasticsearch/facet/latest/InternalLatestFacet.java b/src/main/java/crate/elasticsearch/facet/latest/InternalLatestFacet.java
index a854511..b9bcd40 100644
--- a/src/main/java/crate/elasticsearch/facet/latest/InternalLatestFacet.java
+++ b/src/main/java/crate/elasticsearch/facet/latest/InternalLatestFacet.java
@@ -3,10 +3,10 @@
import org.apache.lucene.util.PriorityQueue;
import org.elasticsearch.common.bytes.BytesReference;
import org.elasticsearch.common.bytes.HashedBytesArray;
+import org.elasticsearch.common.hppc.LongObjectOpenHashMap;
+import org.elasticsearch.common.hppc.procedures.LongObjectProcedure;
import org.elasticsearch.common.io.stream.StreamInput;
import org.elasticsearch.common.io.stream.StreamOutput;
-import org.elasticsearch.common.trove.map.TLongObjectMap;
-import org.elasticsearch.common.trove.procedure.TLongObjectProcedure;
import org.elasticsearch.common.xcontent.XContentBuilder;
import org.elasticsearch.common.xcontent.XContentBuilderString;
import org.elasticsearch.search.facet.Facet;
@@ -89,16 +89,15 @@ protected boolean lessThan(Entry a, Entry b) {
}
}
- public void insert(TLongObjectMap entries) {
+ public void insert(LongObjectOpenHashMap entries) {
if (queue == null) {
this.queue = new EntryPriorityQueue(start + size);
}
- entries.forEachEntry(new TLongObjectProcedure() {
+ entries.forEach(new LongObjectProcedure() {
@Override
- public boolean execute(long key, Entry entry) {
+ public void apply(long key, Entry entry) {
entry.key = key;
queue.insertWithOverflow(entry);
- return true;
}
});
}
diff --git a/src/main/java/crate/elasticsearch/facet/latest/LatestFacetExecutor.java b/src/main/java/crate/elasticsearch/facet/latest/LatestFacetExecutor.java
index 7579db3..9e46a77 100644
--- a/src/main/java/crate/elasticsearch/facet/latest/LatestFacetExecutor.java
+++ b/src/main/java/crate/elasticsearch/facet/latest/LatestFacetExecutor.java
@@ -2,8 +2,8 @@
import org.apache.lucene.index.AtomicReaderContext;
import org.elasticsearch.cache.recycler.CacheRecycler;
+import org.elasticsearch.common.hppc.LongObjectOpenHashMap;
import org.elasticsearch.common.recycler.Recycler;
-import org.elasticsearch.common.trove.ExtTLongObjectHashMap;
import org.elasticsearch.index.fielddata.FieldDataType;
import org.elasticsearch.index.fielddata.IndexNumericFieldData;
import org.elasticsearch.index.fielddata.LongValues;
@@ -27,7 +27,7 @@ public class LatestFacetExecutor extends FacetExecutor {
protected int size = 10;
protected int start = 0;
- final Recycler.V> entries;
+ final Recycler.V> entries;
public LatestFacetExecutor(IndexNumericFieldData keyField, IndexNumericFieldData valueField,
IndexNumericFieldData tsField, int size, int start, CacheRecycler cacheRecycler) {
@@ -80,20 +80,22 @@ public void setNextReader(AtomicReaderContext context) throws IOException {
public static class Aggregator extends LongFacetAggregatorBase {
- final ExtTLongObjectHashMap entries;
+ final LongObjectOpenHashMap entries;
LongValues valueValues;
LongValues tsValues;
- public Aggregator(ExtTLongObjectHashMap entries){
+ public Aggregator(LongObjectOpenHashMap entries){
this.entries = entries;
}
@Override
public void onValue(int docId, long key) {
InternalLatestFacet.Entry entry = entries.get(key);
- long ts = tsValues.getValue(docId);
+ tsValues.setDocument(docId);
+ long ts = tsValues.nextValue();
if (entry == null || entry.ts < ts) {
- int value = (int)valueValues.getValue(docId);
+ valueValues.setDocument(docId);
+ int value = (int)valueValues.nextValue();
if (entry == null) {
entry = new InternalLatestFacet.Entry(ts, value);
entries.put(key, entry);