Examples of XBooleanFilter


Examples of org.elasticsearch.common.lucene.search.XBooleanFilter

        IndexQueryParserService queryParser = queryParser();
        String query = copyToStringFromClasspath("/org/elasticsearch/index/query/bool-filter.json");
        Query parsedQuery = queryParser.parse(query).query();
        assertThat(parsedQuery, instanceOf(FilteredQuery.class));
        FilteredQuery filteredQuery = (FilteredQuery) parsedQuery;
        XBooleanFilter booleanFilter = (XBooleanFilter) filteredQuery.getFilter();

        Iterator<FilterClause> iterator = booleanFilter.iterator();
        assertThat(iterator.hasNext(), equalTo(true));
        FilterClause clause = iterator.next();
        assertThat(clause.getOccur(), equalTo(BooleanClause.Occur.MUST));
        assertThat(((TermFilter) clause.getFilter()).getTerm(), equalTo(new Term("name.first", "shay1")));
View Full Code Here

Examples of org.elasticsearch.common.lucene.search.XBooleanFilter

            } else {
                return termsFilter;
            }
        } else {
            // Current bool filter requires that at least one should clause matches, even with a must clause.
            XBooleanFilter bool = new XBooleanFilter();
            for (String type : types) {
                DocumentMapper docMapper = documentMapper(type);
                if (docMapper == null) {
                    bool.add(new FilterClause(new TermFilter(new Term(TypeFieldMapper.NAME, type)), BooleanClause.Occur.SHOULD));
                } else {
                    bool.add(new FilterClause(docMapper.typeFilter(), BooleanClause.Occur.SHOULD));
                }
            }
            if (filterPercolateType) {
                bool.add(excludePercolatorType, BooleanClause.Occur.MUST);
            }
            if (hasNested) {
                bool.add(NonNestedDocsFilter.INSTANCE, BooleanClause.Occur.MUST);
            }

            return bool;
        }
    }
View Full Code Here

Examples of org.elasticsearch.common.lucene.search.XBooleanFilter

    @Override
    public Filter parse(QueryParseContext parseContext) throws IOException, QueryParsingException {
        XContentParser parser = parseContext.parser();

        XBooleanFilter boolFilter = new XBooleanFilter();

        boolean cache = false;
        CacheKeyFilter.Key cacheKey = null;

        String filterName = null;
        String currentFieldName = null;
        XContentParser.Token token;

        boolean hasAnyFilter = false;

        while ((token = parser.nextToken()) != XContentParser.Token.END_OBJECT) {
            if (token == XContentParser.Token.FIELD_NAME) {
                currentFieldName = parser.currentName();
            } else if (token == XContentParser.Token.START_OBJECT) {
                if ("must".equals(currentFieldName)) {
                    hasAnyFilter = true;
                    Filter filter = parseContext.parseInnerFilter();
                    if (filter != null) {
                        boolFilter.add(new FilterClause(filter, BooleanClause.Occur.MUST));
                    }
                } else if ("must_not".equals(currentFieldName) || "mustNot".equals(currentFieldName)) {
                    hasAnyFilter = true;
                    Filter filter = parseContext.parseInnerFilter();
                    if (filter != null) {
                        boolFilter.add(new FilterClause(filter, BooleanClause.Occur.MUST_NOT));
                    }
                } else if ("should".equals(currentFieldName)) {
                    hasAnyFilter = true;
                    Filter filter = parseContext.parseInnerFilter();
                    if (filter != null) {
                        boolFilter.add(new FilterClause(filter, BooleanClause.Occur.SHOULD));
                    }
                } else {
                    throw new QueryParsingException(parseContext.index(), "[bool] filter does not support [" + currentFieldName + "]");
                }
            } else if (token == XContentParser.Token.START_ARRAY) {
                if ("must".equals(currentFieldName)) {
                    hasAnyFilter = true;
                    while ((token = parser.nextToken()) != XContentParser.Token.END_ARRAY) {
                        Filter filter = parseContext.parseInnerFilter();
                        if (filter != null) {
                            boolFilter.add(new FilterClause(filter, BooleanClause.Occur.MUST));
                        }
                    }
                } else if ("must_not".equals(currentFieldName) || "mustNot".equals(currentFieldName)) {
                    hasAnyFilter = true;
                    while ((token = parser.nextToken()) != XContentParser.Token.END_ARRAY) {
                        Filter filter = parseContext.parseInnerFilter();
                        if (filter != null) {
                            boolFilter.add(new FilterClause(filter, BooleanClause.Occur.MUST_NOT));
                        }
                    }
                } else if ("should".equals(currentFieldName)) {
                    hasAnyFilter = true;
                    while ((token = parser.nextToken()) != XContentParser.Token.END_ARRAY) {
                        Filter filter = parseContext.parseInnerFilter();
                        if (filter != null) {
                            boolFilter.add(new FilterClause(filter, BooleanClause.Occur.SHOULD));
                        }
                    }
                } else {
                    throw new QueryParsingException(parseContext.index(), "[bool] filter does not support [" + currentFieldName + "]");
                }
            } else if (token.isValue()) {
                if ("_cache".equals(currentFieldName)) {
                    cache = parser.booleanValue();
                } else if ("_name".equals(currentFieldName)) {
                    filterName = parser.text();
                } else if ("_cache_key".equals(currentFieldName) || "_cacheKey".equals(currentFieldName)) {
                    cacheKey = new CacheKeyFilter.Key(parser.text());
                } else {
                    throw new QueryParsingException(parseContext.index(), "[bool] filter does not support [" + currentFieldName + "]");
                }
            }
        }

        if (!hasAnyFilter) {
            throw new QueryParsingException(parseContext.index(), "[bool] filter has no inner should/must/must_not elements");
        }

        if (boolFilter.clauses().isEmpty()) {
            // no filters provided, it should be ignored upstream
            return null;
        }

        Filter filter = boolFilter;
View Full Code Here

Examples of org.elasticsearch.common.lucene.search.XBooleanFilter

                throw new InvalidAliasNameException(index, aliases[0], "Unknown alias name was passed to alias Filter");
            }
            return indexAlias.parsedFilter();
        } else {
            // we need to bench here a bit, to see maybe it makes sense to use OrFilter
            XBooleanFilter combined = new XBooleanFilter();
            for (String alias : aliases) {
                IndexAlias indexAlias = alias(alias);
                if (indexAlias == null) {
                    // This shouldn't happen unless alias disappeared after filteringAliases was called.
                    throw new InvalidAliasNameException(index, aliases[0], "Unknown alias name was passed to alias Filter");
                }
                if (indexAlias.parsedFilter() != null) {
                    combined.add(new FilterClause(indexAlias.parsedFilter(), BooleanClause.Occur.SHOULD));
                } else {
                    // The filter might be null only if filter was removed after filteringAliases was called
                    return null;
                }
            }
            if (combined.clauses().size() == 0) {
                return null;
            }
            if (combined.clauses().size() == 1) {
                return combined.clauses().get(0).getFilter();
            }
            return combined;
        }
    }
View Full Code Here

Examples of org.elasticsearch.common.lucene.search.XBooleanFilter

            return eastGeoBoundingBoxFilter(topLeft, bottomRight, fieldMapper);
        }
    }

    private static Filter westGeoBoundingBoxFilter(GeoPoint topLeft, GeoPoint bottomRight, GeoPointFieldMapper fieldMapper) {
        XBooleanFilter filter = new XBooleanFilter();
        filter.add(fieldMapper.lonMapper().rangeFilter(null, bottomRight.lon(), true, true), Occur.SHOULD);
        filter.add(fieldMapper.lonMapper().rangeFilter(topLeft.lon(), null, true, true), Occur.SHOULD);
        filter.add(fieldMapper.latMapper().rangeFilter(bottomRight.lat(), topLeft.lat(), true, true), Occur.MUST);
        return filter;
    }
View Full Code Here

Examples of org.elasticsearch.common.lucene.search.XBooleanFilter

        filter.add(fieldMapper.latMapper().rangeFilter(bottomRight.lat(), topLeft.lat(), true, true), Occur.MUST);
        return filter;
    }

    private static Filter eastGeoBoundingBoxFilter(GeoPoint topLeft, GeoPoint bottomRight, GeoPointFieldMapper fieldMapper) {
        XBooleanFilter filter = new XBooleanFilter();
        filter.add(fieldMapper.lonMapper().rangeFilter(topLeft.lon(), bottomRight.lon(), true, true), Occur.MUST);
        filter.add(fieldMapper.latMapper().rangeFilter(bottomRight.lat(), topLeft.lat(), true, true), Occur.MUST);
        return filter;
    }
View Full Code Here

Examples of org.elasticsearch.common.lucene.search.XBooleanFilter

            // no fields exists, so we should not match anything
            return Queries.MATCH_NO_FILTER;
        }
        MapperService.SmartNameFieldMappers nonNullFieldMappers = null;

        XBooleanFilter boolFilter = new XBooleanFilter();
        for (String field : fields) {
            MapperService.SmartNameFieldMappers smartNameFieldMappers = parseContext.smartFieldMappers(field);
            if (smartNameFieldMappers != null) {
                nonNullFieldMappers = smartNameFieldMappers;
            }
            Filter filter = null;
            if (fieldNamesMapper!= null && fieldNamesMapper.mapper().fieldType().indexOptions() != IndexOptions.NONE) {
                final String f;
                if (smartNameFieldMappers != null && smartNameFieldMappers.hasMapper()) {
                    f = smartNameFieldMappers.mapper().names().indexName();
                } else {
                    f = field;
                }
                filter = fieldNamesMapper.mapper().termFilter(f, parseContext);
            }
            // if _field_names are not indexed, we need to go the slow way
            if (filter == null && smartNameFieldMappers != null && smartNameFieldMappers.hasMapper()) {
                filter = smartNameFieldMappers.mapper().rangeFilter(null, null, true, true, parseContext);
            }
            if (filter == null) {
                filter = new TermRangeFilter(field, null, null, true, true);
            }
            boolFilter.add(filter, BooleanClause.Occur.SHOULD);
        }

        // we always cache this one, really does not change... (exists)
        // its ok to cache under the fieldName cacheKey, since its per segment and the mapping applies to this data on this segment...
        Filter filter = parseContext.cacheFilter(boolFilter, new CacheKeyFilter.Key("$exists$" + fieldPattern));
View Full Code Here

Examples of org.elasticsearch.common.lucene.search.XBooleanFilter

                filter = fieldMapper.fieldDataTermsFilter(terms, parseContext);
                if (cache != null && cache) {
                    filter = parseContext.cacheFilter(filter, cacheKey);
                }
            } else if (EXECUTION_VALUE_BOOL.equals(execution)) {
                XBooleanFilter boolFiler = new XBooleanFilter();
                if (fieldMapper != null) {
                    for (Object term : terms) {
                        boolFiler.add(parseContext.cacheFilter(fieldMapper.termFilter(term, parseContext), null), BooleanClause.Occur.SHOULD);
                    }
                } else {
                    for (Object term : terms) {
                        boolFiler.add(parseContext.cacheFilter(new TermFilter(new Term(fieldName, BytesRefs.toBytesRef(term))), null), BooleanClause.Occur.SHOULD);
                    }
                }
                filter = boolFiler;
                // only cache if explicitly told to, since we cache inner filters
                if (cache != null && cache) {
                    filter = parseContext.cacheFilter(filter, cacheKey);
                }
            } else if (EXECUTION_VALUE_BOOL_NOCACHE.equals(execution)) {
                XBooleanFilter boolFiler = new XBooleanFilter();
                if (fieldMapper != null) {
                    for (Object term : terms) {
                        boolFiler.add(fieldMapper.termFilter(term, parseContext), BooleanClause.Occur.SHOULD);
                    }
                } else {
                    for (Object term : terms) {
                        boolFiler.add(new TermFilter(new Term(fieldName, BytesRefs.toBytesRef(term))), BooleanClause.Occur.SHOULD);
                    }
                }
                filter = boolFiler;
                // cache the whole filter by default, or if explicitly told to
                if (cache == null || cache) {
View Full Code Here

Examples of org.elasticsearch.common.lucene.search.XBooleanFilter

        }
        Query query;
        if (strategy instanceof RecursivePrefixTreeStrategy && shapeRelation == ShapeRelation.DISJOINT) {
            // this strategy doesn't support disjoint anymore: but it did before, including creating lucene fieldcache (!)
            // in this case, execute disjoint as exists && !intersects
            XBooleanFilter bool = new XBooleanFilter();
            Filter exists = ExistsFilterParser.newFilter(parseContext, fieldName, null);
            Filter intersects = strategy.makeFilter(getArgs(shape, ShapeRelation.INTERSECTS));
            bool.add(exists, BooleanClause.Occur.MUST);
            bool.add(intersects, BooleanClause.Occur.MUST_NOT);
            query = new ConstantScoreQuery(bool);
        } else {
            query = strategy.makeQuery(getArgs(shape, shapeRelation));
        }
        query.setBoost(boost);
View Full Code Here

Examples of org.elasticsearch.common.lucene.search.XBooleanFilter

        }
        Collection<String> queryTypes = context.queryTypes();
        if (queryTypes.size() == 1) {
            return new PrefixFilter(new Term(UidFieldMapper.NAME, Uid.createUidAsBytes(Iterables.getFirst(queryTypes, null), BytesRefs.toBytesRef(value))));
        }
        XBooleanFilter filter = new XBooleanFilter();
        for (String queryType : queryTypes) {
            filter.add(new PrefixFilter(new Term(UidFieldMapper.NAME, Uid.createUidAsBytes(queryType, BytesRefs.toBytesRef(value)))), BooleanClause.Occur.SHOULD);
        }
        return filter;
    }
View Full Code Here
TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.