Search in sources :

Example 1 with LeafNumericFieldData

use of org.opensearch.index.fielddata.LeafNumericFieldData in project OpenSearch by opensearch-project.

the class ExpressionNumberSortScriptTests method setUp.

@Override
public void setUp() throws Exception {
    super.setUp();
    NumberFieldType fieldType = new NumberFieldType("field", NumberType.DOUBLE);
    MapperService mapperService = mock(MapperService.class);
    when(mapperService.fieldType("field")).thenReturn(fieldType);
    when(mapperService.fieldType("alias")).thenReturn(fieldType);
    SortedNumericDoubleValues doubleValues = mock(SortedNumericDoubleValues.class);
    when(doubleValues.advanceExact(anyInt())).thenReturn(true);
    when(doubleValues.nextValue()).thenReturn(2.718);
    LeafNumericFieldData atomicFieldData = mock(LeafNumericFieldData.class);
    when(atomicFieldData.getDoubleValues()).thenReturn(doubleValues);
    IndexNumericFieldData fieldData = mock(IndexNumericFieldData.class);
    when(fieldData.getFieldName()).thenReturn("field");
    when(fieldData.load(any())).thenReturn(atomicFieldData);
    service = new ExpressionScriptEngine();
    lookup = new SearchLookup(mapperService, (ignored, lookup) -> fieldData);
}
Also used : NumberSortScript(org.opensearch.script.NumberSortScript) IndexNumericFieldData(org.opensearch.index.fielddata.IndexNumericFieldData) LeafNumericFieldData(org.opensearch.index.fielddata.LeafNumericFieldData) OpenSearchTestCase(org.opensearch.test.OpenSearchTestCase) IOException(java.io.IOException) Mockito.when(org.mockito.Mockito.when) SortedNumericDoubleValues(org.opensearch.index.fielddata.SortedNumericDoubleValues) SearchLookup(org.opensearch.search.lookup.SearchLookup) NumberFieldType(org.opensearch.index.mapper.NumberFieldMapper.NumberFieldType) ScriptException(org.opensearch.script.ScriptException) MapperService(org.opensearch.index.mapper.MapperService) NumberType(org.opensearch.index.mapper.NumberFieldMapper.NumberType) Mockito.anyInt(org.mockito.Mockito.anyInt) ParseException(java.text.ParseException) Mockito.any(org.mockito.Mockito.any) Collections(java.util.Collections) Mockito.mock(org.mockito.Mockito.mock) LeafNumericFieldData(org.opensearch.index.fielddata.LeafNumericFieldData) NumberFieldType(org.opensearch.index.mapper.NumberFieldMapper.NumberFieldType) IndexNumericFieldData(org.opensearch.index.fielddata.IndexNumericFieldData) SortedNumericDoubleValues(org.opensearch.index.fielddata.SortedNumericDoubleValues) MapperService(org.opensearch.index.mapper.MapperService) SearchLookup(org.opensearch.search.lookup.SearchLookup)

Example 2 with LeafNumericFieldData

use of org.opensearch.index.fielddata.LeafNumericFieldData in project OpenSearch by opensearch-project.

the class ExpressionFieldScriptTests method setUp.

@Override
public void setUp() throws Exception {
    super.setUp();
    NumberFieldMapper.NumberFieldType fieldType = new NumberFieldMapper.NumberFieldType("field", NumberFieldMapper.NumberType.DOUBLE);
    MapperService mapperService = mock(MapperService.class);
    when(mapperService.fieldType("field")).thenReturn(fieldType);
    when(mapperService.fieldType("alias")).thenReturn(fieldType);
    SortedNumericDoubleValues doubleValues = mock(SortedNumericDoubleValues.class);
    when(doubleValues.advanceExact(anyInt())).thenReturn(true);
    when(doubleValues.nextValue()).thenReturn(2.718);
    LeafNumericFieldData atomicFieldData = mock(LeafNumericFieldData.class);
    when(atomicFieldData.getDoubleValues()).thenReturn(doubleValues);
    IndexNumericFieldData fieldData = mock(IndexNumericFieldData.class);
    when(fieldData.getFieldName()).thenReturn("field");
    when(fieldData.load(any())).thenReturn(atomicFieldData);
    service = new ExpressionScriptEngine();
    lookup = new SearchLookup(mapperService, (ignored, lookup) -> fieldData);
}
Also used : IndexNumericFieldData(org.opensearch.index.fielddata.IndexNumericFieldData) LeafNumericFieldData(org.opensearch.index.fielddata.LeafNumericFieldData) FieldScript(org.opensearch.script.FieldScript) OpenSearchTestCase(org.opensearch.test.OpenSearchTestCase) IOException(java.io.IOException) Mockito.when(org.mockito.Mockito.when) SortedNumericDoubleValues(org.opensearch.index.fielddata.SortedNumericDoubleValues) NumberFieldMapper(org.opensearch.index.mapper.NumberFieldMapper) SearchLookup(org.opensearch.search.lookup.SearchLookup) ScriptException(org.opensearch.script.ScriptException) MapperService(org.opensearch.index.mapper.MapperService) Matchers.equalTo(org.hamcrest.Matchers.equalTo) Mockito.anyInt(org.mockito.Mockito.anyInt) ParseException(java.text.ParseException) Mockito.any(org.mockito.Mockito.any) Collections(java.util.Collections) Mockito.mock(org.mockito.Mockito.mock) NumberFieldMapper(org.opensearch.index.mapper.NumberFieldMapper) LeafNumericFieldData(org.opensearch.index.fielddata.LeafNumericFieldData) IndexNumericFieldData(org.opensearch.index.fielddata.IndexNumericFieldData) SortedNumericDoubleValues(org.opensearch.index.fielddata.SortedNumericDoubleValues) MapperService(org.opensearch.index.mapper.MapperService) SearchLookup(org.opensearch.search.lookup.SearchLookup)

Example 3 with LeafNumericFieldData

use of org.opensearch.index.fielddata.LeafNumericFieldData in project OpenSearch by opensearch-project.

the class ScaledFloatFieldTypeTests method testFieldData.

public void testFieldData() throws IOException {
    double scalingFactor = 0.1 + randomDouble() * 100;
    Directory dir = newDirectory();
    IndexWriter w = new IndexWriter(dir, new IndexWriterConfig(null));
    Document doc = new Document();
    doc.add(new SortedNumericDocValuesField("scaled_float1", 10));
    doc.add(new SortedNumericDocValuesField("scaled_float2", 5));
    doc.add(new SortedNumericDocValuesField("scaled_float2", 12));
    w.addDocument(doc);
    try (DirectoryReader reader = DirectoryReader.open(w)) {
        // single-valued
        ScaledFloatFieldMapper.ScaledFloatFieldType f1 = new ScaledFloatFieldMapper.ScaledFloatFieldType("scaled_float1", scalingFactor);
        IndexNumericFieldData fielddata = (IndexNumericFieldData) f1.fielddataBuilder("index", () -> {
            throw new UnsupportedOperationException();
        }).build(null, null);
        assertEquals(fielddata.getNumericType(), IndexNumericFieldData.NumericType.DOUBLE);
        LeafNumericFieldData leafFieldData = fielddata.load(reader.leaves().get(0));
        SortedNumericDoubleValues values = leafFieldData.getDoubleValues();
        assertTrue(values.advanceExact(0));
        assertEquals(1, values.docValueCount());
        assertEquals(10 / f1.getScalingFactor(), values.nextValue(), 10e-5);
        // multi-valued
        ScaledFloatFieldMapper.ScaledFloatFieldType f2 = new ScaledFloatFieldMapper.ScaledFloatFieldType("scaled_float2", scalingFactor);
        fielddata = (IndexNumericFieldData) f2.fielddataBuilder("index", () -> {
            throw new UnsupportedOperationException();
        }).build(null, null);
        leafFieldData = fielddata.load(reader.leaves().get(0));
        values = leafFieldData.getDoubleValues();
        assertTrue(values.advanceExact(0));
        assertEquals(2, values.docValueCount());
        assertEquals(5 / f2.getScalingFactor(), values.nextValue(), 10e-5);
        assertEquals(12 / f2.getScalingFactor(), values.nextValue(), 10e-5);
    }
    IOUtils.close(w, dir);
}
Also used : LeafNumericFieldData(org.opensearch.index.fielddata.LeafNumericFieldData) DirectoryReader(org.apache.lucene.index.DirectoryReader) IndexNumericFieldData(org.opensearch.index.fielddata.IndexNumericFieldData) Document(org.apache.lucene.document.Document) SortedNumericDocValuesField(org.apache.lucene.document.SortedNumericDocValuesField) IndexWriter(org.apache.lucene.index.IndexWriter) SortedNumericDoubleValues(org.opensearch.index.fielddata.SortedNumericDoubleValues) Directory(org.apache.lucene.store.Directory) IndexWriterConfig(org.apache.lucene.index.IndexWriterConfig)

Example 4 with LeafNumericFieldData

use of org.opensearch.index.fielddata.LeafNumericFieldData in project OpenSearch by opensearch-project.

the class DateFieldTypeTests method testDateNanoDocValues.

public void testDateNanoDocValues() throws IOException {
    // Create an index with some docValues
    Directory dir = newDirectory();
    IndexWriter w = new IndexWriter(dir, new IndexWriterConfig(null));
    Document doc = new Document();
    NumericDocValuesField docValuesField = new NumericDocValuesField("my_date", 1444608000000L);
    doc.add(docValuesField);
    w.addDocument(doc);
    docValuesField.setLongValue(1459641600000L);
    w.addDocument(doc);
    // Create the doc values reader
    SortedNumericIndexFieldData fieldData = new SortedNumericIndexFieldData("my_date", IndexNumericFieldData.NumericType.DATE_NANOSECONDS);
    // Read index and check the doc values
    DirectoryReader reader = DirectoryReader.open(w);
    assertTrue(reader.leaves().size() > 0);
    LeafNumericFieldData a = fieldData.load(reader.leaves().get(0).reader().getContext());
    SortedNumericDocValues docValues = a.getLongValues();
    assertEquals(0, docValues.nextDoc());
    assertEquals(1, docValues.nextDoc());
    assertEquals(DocIdSetIterator.NO_MORE_DOCS, docValues.nextDoc());
    reader.close();
    w.close();
    dir.close();
}
Also used : SortedNumericIndexFieldData(org.opensearch.index.fielddata.plain.SortedNumericIndexFieldData) LeafNumericFieldData(org.opensearch.index.fielddata.LeafNumericFieldData) SortedNumericDocValues(org.apache.lucene.index.SortedNumericDocValues) SortedNumericDocValuesField(org.apache.lucene.document.SortedNumericDocValuesField) NumericDocValuesField(org.apache.lucene.document.NumericDocValuesField) IndexWriter(org.apache.lucene.index.IndexWriter) DirectoryReader(org.apache.lucene.index.DirectoryReader) Document(org.opensearch.index.mapper.ParseContext.Document) Directory(org.apache.lucene.store.Directory) IndexWriterConfig(org.apache.lucene.index.IndexWriterConfig)

Example 5 with LeafNumericFieldData

use of org.opensearch.index.fielddata.LeafNumericFieldData in project OpenSearch by opensearch-project.

the class EmptyMemberValueSource method getValues.

@Override
public DoubleValues getValues(LeafReaderContext leaf, DoubleValues scores) {
    LeafNumericFieldData leafData = (LeafNumericFieldData) fieldData.load(leaf);
    final SortedNumericDoubleValues values = leafData.getDoubleValues();
    return DoubleValues.withDefault(new DoubleValues() {

        @Override
        public double doubleValue() {
            return 0;
        }

        @Override
        public boolean advanceExact(int doc) throws IOException {
            return values.advanceExact(doc);
        }
    }, 1);
}
Also used : LeafNumericFieldData(org.opensearch.index.fielddata.LeafNumericFieldData) SortedNumericDoubleValues(org.opensearch.index.fielddata.SortedNumericDoubleValues) DoubleValues(org.apache.lucene.search.DoubleValues) IOException(java.io.IOException) SortedNumericDoubleValues(org.opensearch.index.fielddata.SortedNumericDoubleValues)

Aggregations

LeafNumericFieldData (org.opensearch.index.fielddata.LeafNumericFieldData)11 SortedNumericDoubleValues (org.opensearch.index.fielddata.SortedNumericDoubleValues)6 DoubleValues (org.apache.lucene.search.DoubleValues)5 IOException (java.io.IOException)4 IndexNumericFieldData (org.opensearch.index.fielddata.IndexNumericFieldData)4 ParseException (java.text.ParseException)3 Collections (java.util.Collections)3 Mockito.any (org.mockito.Mockito.any)3 Mockito.anyInt (org.mockito.Mockito.anyInt)3 Mockito.mock (org.mockito.Mockito.mock)3 Mockito.when (org.mockito.Mockito.when)3 NumericDoubleValues (org.opensearch.index.fielddata.NumericDoubleValues)3 MapperService (org.opensearch.index.mapper.MapperService)3 ScriptException (org.opensearch.script.ScriptException)3 SearchLookup (org.opensearch.search.lookup.SearchLookup)3 OpenSearchTestCase (org.opensearch.test.OpenSearchTestCase)3 SortedNumericDocValuesField (org.apache.lucene.document.SortedNumericDocValuesField)2 DirectoryReader (org.apache.lucene.index.DirectoryReader)2 IndexWriter (org.apache.lucene.index.IndexWriter)2 IndexWriterConfig (org.apache.lucene.index.IndexWriterConfig)2