mirror of
https://github.com/honeymoose/OpenSearch.git
synced 2025-03-09 14:34:43 +00:00
Added support for Collections in TermsQuery/InQuery.
This commit is contained in:
parent
3c995d5dcc
commit
fbd732cde2
@ -22,6 +22,8 @@ package org.elasticsearch.index.query;
|
||||
import com.spatial4j.core.shape.Shape;
|
||||
import org.elasticsearch.common.Nullable;
|
||||
|
||||
import java.util.Collection;
|
||||
|
||||
/**
|
||||
* A static factory for simple "import static" usage.
|
||||
*/
|
||||
@ -675,6 +677,16 @@ public abstract class QueryBuilders {
|
||||
return new TermsQueryBuilder(name, values);
|
||||
}
|
||||
|
||||
/**
|
||||
* A filer for a field based on several terms matching on any of them.
|
||||
*
|
||||
* @param name The field name
|
||||
* @param values The terms
|
||||
*/
|
||||
public static TermsQueryBuilder termsQuery(String name, Collection values) {
|
||||
return new TermsQueryBuilder(name, values);
|
||||
}
|
||||
|
||||
/**
|
||||
* A filer for a field based on several terms matching on any of them.
|
||||
*
|
||||
@ -735,6 +747,16 @@ public abstract class QueryBuilders {
|
||||
return new TermsQueryBuilder(name, values);
|
||||
}
|
||||
|
||||
/**
|
||||
* A filer for a field based on several terms matching on any of them.
|
||||
*
|
||||
* @param name The field name
|
||||
* @param values The terms
|
||||
*/
|
||||
public static TermsQueryBuilder inQuery(String name, Collection values) {
|
||||
return new TermsQueryBuilder(name, values);
|
||||
}
|
||||
|
||||
/**
|
||||
* A query that will execute the wrapped query only for the specified indices, and "match_all" when
|
||||
* it does not match those indices.
|
||||
|
@ -22,6 +22,7 @@ package org.elasticsearch.index.query;
|
||||
import org.elasticsearch.common.xcontent.XContentBuilder;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Collection;
|
||||
|
||||
/**
|
||||
*
|
||||
@ -115,6 +116,16 @@ public class TermsQueryBuilder extends BaseQueryBuilder implements BoostableQuer
|
||||
this.values = values;
|
||||
}
|
||||
|
||||
/**
|
||||
* A query for a field based on several terms matching on any of them.
|
||||
*
|
||||
* @param name The field name
|
||||
* @param values The terms
|
||||
*/
|
||||
public TermsQueryBuilder(String name, Collection values) {
|
||||
this(name, values.toArray());
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the minimum number of matches across the provided terms. Defaults to <tt>1</tt>.
|
||||
*/
|
||||
|
@ -19,6 +19,7 @@
|
||||
|
||||
package org.elasticsearch.test.unit.index.query;
|
||||
|
||||
import com.google.common.collect.Lists;
|
||||
import org.apache.lucene.index.Term;
|
||||
import org.apache.lucene.queries.BoostingQuery;
|
||||
import org.apache.lucene.queries.FilterClause;
|
||||
@ -1193,6 +1194,23 @@ public class SimpleIndexQueryParserTests {
|
||||
assertThat(clauses[3].getOccur(), equalTo(BooleanClause.Occur.SHOULD));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testTermsQueryBuilder() throws IOException {
|
||||
IndexQueryParserService queryParser = queryParser();
|
||||
Query parsedQuery = queryParser.parse(termsQuery("name.first", Lists.newArrayList("shay", "test"))).query();
|
||||
assertThat(parsedQuery, instanceOf(BooleanQuery.class));
|
||||
BooleanQuery booleanQuery = (BooleanQuery) parsedQuery;
|
||||
BooleanClause[] clauses = booleanQuery.getClauses();
|
||||
|
||||
assertThat(clauses.length, equalTo(2));
|
||||
|
||||
assertThat(((TermQuery) clauses[0].getQuery()).getTerm(), equalTo(new Term("name.first", "shay")));
|
||||
assertThat(clauses[0].getOccur(), equalTo(BooleanClause.Occur.SHOULD));
|
||||
|
||||
assertThat(((TermQuery) clauses[1].getQuery()).getTerm(), equalTo(new Term("name.first", "test")));
|
||||
assertThat(clauses[1].getOccur(), equalTo(BooleanClause.Occur.SHOULD));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testTermsQuery() throws IOException {
|
||||
IndexQueryParserService queryParser = queryParser();
|
||||
@ -1211,6 +1229,26 @@ public class SimpleIndexQueryParserTests {
|
||||
assertThat(clauses[1].getOccur(), equalTo(BooleanClause.Occur.SHOULD));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testInQuery() throws IOException {
|
||||
IndexQueryParserService queryParser = queryParser();
|
||||
Query parsedQuery = queryParser.parse(termsQuery("name.first", Lists.newArrayList("test1", "test2", "test3"))).query();
|
||||
assertThat(parsedQuery, instanceOf(BooleanQuery.class));
|
||||
BooleanQuery booleanQuery = (BooleanQuery) parsedQuery;
|
||||
BooleanClause[] clauses = booleanQuery.getClauses();
|
||||
|
||||
assertThat(clauses.length, equalTo(3));
|
||||
|
||||
assertThat(((TermQuery) clauses[0].getQuery()).getTerm(), equalTo(new Term("name.first", "test1")));
|
||||
assertThat(clauses[0].getOccur(), equalTo(BooleanClause.Occur.SHOULD));
|
||||
|
||||
assertThat(((TermQuery) clauses[1].getQuery()).getTerm(), equalTo(new Term("name.first", "test2")));
|
||||
assertThat(clauses[1].getOccur(), equalTo(BooleanClause.Occur.SHOULD));
|
||||
|
||||
assertThat(((TermQuery) clauses[2].getQuery()).getTerm(), equalTo(new Term("name.first", "test3")));
|
||||
assertThat(clauses[2].getOccur(), equalTo(BooleanClause.Occur.SHOULD));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testFilteredQueryBuilder() throws IOException {
|
||||
IndexQueryParserService queryParser = queryParser();
|
||||
|
Loading…
x
Reference in New Issue
Block a user