summaryrefslogtreecommitdiff
path: root/core/src/main/java/org/elasticsearch/index/mapper/MapperService.java
diff options
context:
space:
mode:
Diffstat (limited to 'core/src/main/java/org/elasticsearch/index/mapper/MapperService.java')
-rwxr-xr-xcore/src/main/java/org/elasticsearch/index/mapper/MapperService.java162
1 files changed, 2 insertions, 160 deletions
diff --git a/core/src/main/java/org/elasticsearch/index/mapper/MapperService.java b/core/src/main/java/org/elasticsearch/index/mapper/MapperService.java
index 999eeb2edf..b25f5f6a02 100755
--- a/core/src/main/java/org/elasticsearch/index/mapper/MapperService.java
+++ b/core/src/main/java/org/elasticsearch/index/mapper/MapperService.java
@@ -23,27 +23,14 @@ import com.carrotsearch.hppc.ObjectHashSet;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.DelegatingAnalyzerWrapper;
-import org.apache.lucene.index.IndexOptions;
-import org.apache.lucene.index.Term;
-import org.apache.lucene.queries.TermsQuery;
-import org.apache.lucene.search.BooleanClause;
-import org.apache.lucene.search.BooleanClause.Occur;
-import org.apache.lucene.search.BooleanQuery;
-import org.apache.lucene.search.ConstantScoreQuery;
-import org.apache.lucene.search.Query;
-import org.apache.lucene.search.TermQuery;
-import org.apache.lucene.util.BytesRef;
import org.elasticsearch.ElasticsearchGenerationException;
-import org.elasticsearch.common.Nullable;
import org.elasticsearch.common.compress.CompressedXContent;
-import org.elasticsearch.common.lucene.search.Queries;
import org.elasticsearch.common.regex.Regex;
import org.elasticsearch.common.settings.Setting;
import org.elasticsearch.index.AbstractIndexComponent;
import org.elasticsearch.index.IndexSettings;
import org.elasticsearch.index.analysis.AnalysisService;
import org.elasticsearch.index.mapper.Mapper.BuilderContext;
-import org.elasticsearch.index.mapper.internal.TypeFieldMapper;
import org.elasticsearch.index.mapper.object.ObjectMapper;
import org.elasticsearch.index.query.QueryShardContext;
import org.elasticsearch.index.similarity.SimilarityService;
@@ -63,7 +50,6 @@ import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
-import java.util.concurrent.CopyOnWriteArrayList;
import java.util.function.Function;
import java.util.function.Supplier;
import java.util.stream.Collectors;
@@ -95,7 +81,7 @@ public class MapperService extends AbstractIndexComponent implements Closeable {
}
public static final String DEFAULT_MAPPING = "_default_";
- public static final Setting<Long> INDEX_MAPPING_NESTED_FIELDS_LIMIT_SETTING = Setting.longSetting("index.mapping.nested_fields.limit", 50l, 0, true, Setting.Scope.INDEX);
+ public static final Setting<Long> INDEX_MAPPING_NESTED_FIELDS_LIMIT_SETTING = Setting.longSetting("index.mapping.nested_fields.limit", 50L, 0, true, Setting.Scope.INDEX);
public static final boolean INDEX_MAPPER_DYNAMIC_DEFAULT = true;
public static final Setting<Boolean> INDEX_MAPPER_DYNAMIC_SETTING = Setting.boolSetting("index.mapper.dynamic", INDEX_MAPPER_DYNAMIC_DEFAULT, false, Setting.Scope.INDEX);
private static ObjectHashSet<String> META_FIELDS = ObjectHashSet.from(
@@ -125,8 +111,6 @@ public class MapperService extends AbstractIndexComponent implements Closeable {
private final MapperAnalyzerWrapper searchAnalyzer;
private final MapperAnalyzerWrapper searchQuoteAnalyzer;
- private final List<DocumentTypeListener> typeListeners = new CopyOnWriteArrayList<>();
-
private volatile Map<String, MappedFieldType> unmappedFieldTypes = emptyMap();
private volatile Set<String> parentTypes = emptySet();
@@ -212,14 +196,6 @@ public class MapperService extends AbstractIndexComponent implements Closeable {
return this.documentParser;
}
- public void addTypeListener(DocumentTypeListener listener) {
- typeListeners.add(listener);
- }
-
- public void removeTypeListener(DocumentTypeListener listener) {
- typeListeners.remove(listener);
- }
-
public DocumentMapper merge(String type, CompressedXContent mappingSource, MergeReason reason, boolean updateAllTypes) {
if (DEFAULT_MAPPING.equals(type)) {
// verify we can parse it
@@ -335,14 +311,6 @@ public class MapperService extends AbstractIndexComponent implements Closeable {
this.fullPathObjectMappers = fullPathObjectMappers;
this.parentTypes = parentTypes;
- // 5. send notifications about the change
- if (oldMapper == null) {
- // means the mapping was created
- for (DocumentTypeListener typeListener : typeListeners) {
- typeListener.beforeCreate(mapper);
- }
- }
-
assert assertSerialization(newMapper);
assert assertMappersShareSameFieldType();
@@ -428,7 +396,7 @@ public class MapperService extends AbstractIndexComponent implements Closeable {
}
}
if (allowedNestedFields >= 0 && actualNestedFields > allowedNestedFields) {
- throw new IllegalArgumentException("Limit of nested fields [" + allowedNestedFields + "] in index [" + index().name() + "] has been exceeded");
+ throw new IllegalArgumentException("Limit of nested fields [" + allowedNestedFields + "] in index [" + index().getName() + "] has been exceeded");
}
}
@@ -482,105 +450,6 @@ public class MapperService extends AbstractIndexComponent implements Closeable {
}
/**
- * A filter for search. If a filter is required, will return it, otherwise, will return <tt>null</tt>.
- */
- @Nullable
- public Query searchFilter(String... types) {
- boolean filterPercolateType = hasMapping(PercolatorService.TYPE_NAME);
- if (types != null && filterPercolateType) {
- for (String type : types) {
- if (PercolatorService.TYPE_NAME.equals(type)) {
- filterPercolateType = false;
- break;
- }
- }
- }
- Query percolatorType = null;
- if (filterPercolateType) {
- percolatorType = documentMapper(PercolatorService.TYPE_NAME).typeFilter();
- }
-
- if (types == null || types.length == 0) {
- if (hasNested && filterPercolateType) {
- BooleanQuery.Builder bq = new BooleanQuery.Builder();
- bq.add(percolatorType, Occur.MUST_NOT);
- bq.add(Queries.newNonNestedFilter(), Occur.MUST);
- return new ConstantScoreQuery(bq.build());
- } else if (hasNested) {
- return Queries.newNonNestedFilter();
- } else if (filterPercolateType) {
- return new ConstantScoreQuery(Queries.not(percolatorType));
- } else {
- return null;
- }
- }
- // if we filter by types, we don't need to filter by non nested docs
- // since they have different types (starting with __)
- if (types.length == 1) {
- DocumentMapper docMapper = documentMapper(types[0]);
- Query filter = docMapper != null ? docMapper.typeFilter() : new TermQuery(new Term(TypeFieldMapper.NAME, types[0]));
- if (filterPercolateType) {
- BooleanQuery.Builder bq = new BooleanQuery.Builder();
- bq.add(percolatorType, Occur.MUST_NOT);
- bq.add(filter, Occur.MUST);
- return new ConstantScoreQuery(bq.build());
- } else {
- return filter;
- }
- }
- // see if we can use terms filter
- boolean useTermsFilter = true;
- for (String type : types) {
- DocumentMapper docMapper = documentMapper(type);
- if (docMapper == null) {
- useTermsFilter = false;
- break;
- }
- if (docMapper.typeMapper().fieldType().indexOptions() == IndexOptions.NONE) {
- useTermsFilter = false;
- break;
- }
- }
-
- // We only use terms filter is there is a type filter, this means we don't need to check for hasNested here
- if (useTermsFilter) {
- BytesRef[] typesBytes = new BytesRef[types.length];
- for (int i = 0; i < typesBytes.length; i++) {
- typesBytes[i] = new BytesRef(types[i]);
- }
- TermsQuery termsFilter = new TermsQuery(TypeFieldMapper.NAME, typesBytes);
- if (filterPercolateType) {
- BooleanQuery.Builder bq = new BooleanQuery.Builder();
- bq.add(percolatorType, Occur.MUST_NOT);
- bq.add(termsFilter, Occur.MUST);
- return new ConstantScoreQuery(bq.build());
- } else {
- return termsFilter;
- }
- } else {
- BooleanQuery.Builder typesBool = new BooleanQuery.Builder();
- for (String type : types) {
- DocumentMapper docMapper = documentMapper(type);
- if (docMapper == null) {
- typesBool.add(new TermQuery(new Term(TypeFieldMapper.NAME, type)), BooleanClause.Occur.SHOULD);
- } else {
- typesBool.add(docMapper.typeFilter(), BooleanClause.Occur.SHOULD);
- }
- }
- BooleanQuery.Builder bool = new BooleanQuery.Builder();
- bool.add(typesBool.build(), Occur.MUST);
- if (filterPercolateType) {
- bool.add(percolatorType, BooleanClause.Occur.MUST_NOT);
- }
- if (hasNested) {
- bool.add(Queries.newNonNestedFilter(), BooleanClause.Occur.MUST);
- }
-
- return new ConstantScoreQuery(bool.build());
- }
- }
-
- /**
* Returns the {@link MappedFieldType} for the give fullName.
*
* If multiple types have fields with the same full name, the first is returned.
@@ -642,33 +511,6 @@ public class MapperService extends AbstractIndexComponent implements Closeable {
return this.searchQuoteAnalyzer;
}
- /**
- * Resolves the closest inherited {@link ObjectMapper} that is nested.
- */
- public ObjectMapper resolveClosestNestedObjectMapper(String fieldName) {
- int indexOf = fieldName.lastIndexOf('.');
- if (indexOf == -1) {
- return null;
- } else {
- do {
- String objectPath = fieldName.substring(0, indexOf);
- ObjectMapper objectMapper = fullPathObjectMappers.get(objectPath);
- if (objectMapper == null) {
- indexOf = objectPath.lastIndexOf('.');
- continue;
- }
-
- if (objectMapper.nested().isNested()) {
- return objectMapper;
- }
-
- indexOf = objectPath.lastIndexOf('.');
- } while (indexOf != -1);
- }
-
- return null;
- }
-
public Set<String> getParentTypes() {
return parentTypes;
}