Allow to search across indices and types even if some types do not exists on some indices, closes #839.
This commit is contained in:
parent
4603d10501
commit
1fdef91fc2
|
@ -31,6 +31,7 @@ import org.elasticsearch.common.collect.Sets;
|
|||
import org.elasticsearch.common.collect.UnmodifiableIterator;
|
||||
import org.elasticsearch.common.inject.Inject;
|
||||
import org.elasticsearch.common.io.Streams;
|
||||
import org.elasticsearch.common.lucene.search.TermFilter;
|
||||
import org.elasticsearch.common.regex.Regex;
|
||||
import org.elasticsearch.common.settings.Settings;
|
||||
import org.elasticsearch.common.util.concurrent.ThreadSafe;
|
||||
|
@ -240,9 +241,28 @@ public class MapperService extends AbstractIndexComponent implements Iterable<Do
|
|||
}
|
||||
|
||||
/**
|
||||
* A filter to filter based on several types.
|
||||
* A filter to filter based on several types. Will not throw types missing failure, and will
|
||||
* simply filter it out also.
|
||||
*/
|
||||
public Filter typesFilter(String... types) {
|
||||
if (types.length == 1) {
|
||||
DocumentMapper docMapper = documentMapper(types[0]);
|
||||
if (docMapper == null) {
|
||||
return new TermFilter(new Term(types[0]));
|
||||
}
|
||||
return docMapper.typeFilter();
|
||||
}
|
||||
PublicTermsFilter termsFilter = new PublicTermsFilter();
|
||||
for (String type : types) {
|
||||
termsFilter.addTerm(new Term(TypeFieldMapper.NAME, type));
|
||||
}
|
||||
return termsFilter;
|
||||
}
|
||||
|
||||
/**
|
||||
* A filter to filter based on several types.
|
||||
*/
|
||||
public Filter typesFilterFailOnMissing(String... types) throws TypeMissingException {
|
||||
if (types.length == 1) {
|
||||
DocumentMapper docMapper = documentMapper(types[0]);
|
||||
if (docMapper == null) {
|
||||
|
|
Loading…
Reference in New Issue