Deprecate _type from LeafDocLookup (#37491)

* Deprecate _type from LeafDocLookup

* Response to PR comments.

* Response to PR comments.
This commit is contained in:
Jack Conradson 2019-01-16 07:05:09 -08:00 committed by GitHub
parent 0b5af276a8
commit 3d8c04659c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 20 additions and 0 deletions

View File

@ -18,9 +18,11 @@
*/
package org.elasticsearch.search.lookup;
import org.apache.logging.log4j.LogManager;
import org.apache.lucene.index.LeafReaderContext;
import org.elasticsearch.ExceptionsHelper;
import org.elasticsearch.common.Nullable;
import org.elasticsearch.common.logging.DeprecationLogger;
import org.elasticsearch.index.fielddata.IndexFieldData;
import org.elasticsearch.index.fielddata.ScriptDocValues;
import org.elasticsearch.index.mapper.MappedFieldType;
@ -38,6 +40,12 @@ import java.util.function.Function;
public class LeafDocLookup implements Map<String, ScriptDocValues<?>> {
private static final DeprecationLogger DEPRECATION_LOGGER
= new DeprecationLogger(LogManager.getLogger(LeafDocLookup.class));
static final String TYPES_DEPRECATION_KEY = "type-field-doc-lookup";
static final String TYPES_DEPRECATION_MESSAGE =
"[types removal] Looking up doc types in scripts is deprecated.";
private final Map<String, ScriptDocValues<?>> localCacheFieldData = new HashMap<>(4);
private final MapperService mapperService;
@ -72,6 +80,10 @@ public class LeafDocLookup implements Map<String, ScriptDocValues<?>> {
@Override
public ScriptDocValues<?> get(Object key) {
// deprecate _type
if ("_type".equals(key)) {
DEPRECATION_LOGGER.deprecatedAndMaybeLog(TYPES_DEPRECATION_KEY, TYPES_DEPRECATION_MESSAGE);
}
// assume its a string...
String fieldName = key.toString();
ScriptDocValues<?> scriptValues = localCacheFieldData.get(fieldName);

View File

@ -26,6 +26,7 @@ import org.elasticsearch.index.mapper.MapperService;
import org.elasticsearch.test.ESTestCase;
import org.junit.Before;
import static org.elasticsearch.search.lookup.LeafDocLookup.TYPES_DEPRECATION_MESSAGE;
import static org.mockito.AdditionalAnswers.returnsFirstArg;
import static org.mockito.Matchers.anyObject;
import static org.mockito.Mockito.doReturn;
@ -45,6 +46,7 @@ public class LeafDocLookupTests extends ESTestCase {
when(fieldType.valueForDisplay(anyObject())).then(returnsFirstArg());
MapperService mapperService = mock(MapperService.class);
when(mapperService.fullName("_type")).thenReturn(fieldType);
when(mapperService.fullName("field")).thenReturn(fieldType);
when(mapperService.fullName("alias")).thenReturn(fieldType);
@ -72,4 +74,10 @@ public class LeafDocLookupTests extends ESTestCase {
ScriptDocValues<?> fetchedDocValues = docLookup.get("alias");
assertEquals(docValues, fetchedDocValues);
}
public void testTypesDeprecation() {
ScriptDocValues<?> fetchedDocValues = docLookup.get("_type");
assertEquals(docValues, fetchedDocValues);
assertWarnings(TYPES_DEPRECATION_MESSAGE);
}
}