Skip to content

Commit 7752bd8

Browse files
author
Rahul Anishetty
committed
generate 5 compatible xContent queries
1 parent d4665e1 commit 7752bd8

File tree

8 files changed

+107
-30
lines changed

8 files changed

+107
-30
lines changed

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
<modelVersion>4.0.0</modelVersion>
77
<groupId>org.elasticsearch</groupId>
88
<artifactId>elasticsearch</artifactId>
9-
<version>1.4.1-rest-1.0.28-SNAPSHOT</version>
9+
<version>1.4.1-rest-1.0.29-SNAPSHOT</version>
1010
<packaging>jar</packaging>
1111
<description>Elasticsearch - Open Source, Distributed, RESTful Search Engine</description>
1212
<inceptionYear>2009</inceptionYear>

src/main/java/org/elasticsearch/index/query/FilteredQueryBuilder.java

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -70,28 +70,28 @@ public FilteredQueryBuilder queryName(String queryName) {
7070
@Override
7171
protected void doXContent(XContentBuilder builder, Params params) throws IOException {
7272
if (ToXContentUtils.getVersionFromParams(params).onOrAfter(Version.V_5_0_0)) {
73-
if (queryBuilder != null)
74-
QueryBuilders.boolQuery().must(queryBuilder).boost(boost).queryName(queryName).toXContent(builder, params);
75-
if (filterBuilder != null) {
76-
FilterBuilders.boolFilter().must(filterBuilder).toXContent(builder, params);
73+
builder.startObject("bool");
74+
if (queryBuilder != null) {
75+
builder.field("must");
76+
queryBuilder.toXContent(builder, params);
7777
}
7878
} else {
7979
builder.startObject(FilteredQueryParser.NAME);
8080
if (queryBuilder != null) {
8181
builder.field("query");
8282
queryBuilder.toXContent(builder, params);
8383
}
84-
if (filterBuilder != null) {
85-
builder.field("filter");
86-
filterBuilder.toXContent(builder, params);
87-
}
88-
if (boost != -1) {
89-
builder.field("boost", boost);
90-
}
91-
if (queryName != null) {
92-
builder.field("_name", queryName);
93-
}
94-
builder.endObject();
9584
}
85+
if (filterBuilder != null) {
86+
builder.field("filter");
87+
filterBuilder.toXContent(builder, params);
88+
}
89+
if (boost != -1) {
90+
builder.field("boost", boost);
91+
}
92+
if (queryName != null) {
93+
builder.field("_name", queryName);
94+
}
95+
builder.endObject();
9696
}
9797
}

src/main/java/org/elasticsearch/index/query/IndicesFilterBuilder.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@
1919

2020
package org.elasticsearch.index.query;
2121

22+
import org.elasticsearch.Version;
23+
import org.elasticsearch.common.xcontent.ToXContentUtils;
2224
import org.elasticsearch.common.xcontent.XContentBuilder;
2325

2426
import java.io.IOException;
@@ -71,7 +73,11 @@ public IndicesFilterBuilder filterName(String filterName) {
7173
protected void doXContent(XContentBuilder builder, Params params) throws IOException {
7274
builder.startObject(IndicesFilterParser.NAME);
7375
builder.field("indices", indices);
74-
builder.field("filter");
76+
if (ToXContentUtils.getVersionFromParams(params).onOrAfter(Version.V_5_0_0)) {
77+
builder.field("query");
78+
} else {
79+
builder.field("filter");
80+
}
7581
filterBuilder.toXContent(builder, params);
7682
if (noMatchFilter != null) {
7783
builder.field("no_match_filter");

src/main/java/org/elasticsearch/index/query/NestedFilterBuilder.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ protected void doXContent(XContentBuilder builder, Params params) throws IOExcep
8181
if (queryBuilder != null) {
8282
builder.field("query");
8383
queryBuilder.toXContent(builder, params);
84-
} else {
84+
} else if (filterBuilder != null) {
8585
if (ToXContentUtils.getVersionFromParams(params).onOrAfter(Version.V_5_0_0)) {
8686
builder.field("query");
8787
} else {
@@ -100,9 +100,9 @@ protected void doXContent(XContentBuilder builder, Params params) throws IOExcep
100100
if (cacheKey != null) {
101101
builder.field("_cache_key", cacheKey);
102102
}
103-
if (filterName != null) {
104-
builder.field("_name", filterName);
105-
}
103+
}
104+
if (filterName != null) {
105+
builder.field("_name", filterName);
106106
}
107107
builder.field("path", path);
108108
builder.endObject();

src/main/java/org/elasticsearch/index/query/NestedQueryBuilder.java

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ protected void doXContent(XContentBuilder builder, Params params) throws IOExcep
8181
if (queryBuilder != null) {
8282
builder.field("query");
8383
queryBuilder.toXContent(builder, params);
84-
} else {
84+
} else if (filterBuilder != null) {
8585
if (ToXContentUtils.getVersionFromParams(params).onOrAfter(Version.V_5_0_0)) {
8686
builder.field("query");
8787
} else {
@@ -96,10 +96,8 @@ protected void doXContent(XContentBuilder builder, Params params) throws IOExcep
9696
if (boost != 1.0f) {
9797
builder.field("boost", boost);
9898
}
99-
if (!ToXContentUtils.getVersionFromParams(params).onOrAfter(Version.V_5_0_0)) {
100-
if (queryName != null) {
101-
builder.field("_name", queryName);
102-
}
99+
if (queryName != null) {
100+
builder.field("_name", queryName);
103101
}
104102
builder.endObject();
105103
}

src/main/java/org/elasticsearch/index/query/QueryFilterBuilder.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -63,11 +63,11 @@ public QueryFilterBuilder cache(boolean cache) {
6363

6464
@Override
6565
protected void doXContent(XContentBuilder builder, Params params) throws IOException {
66-
if (filterName == null && cache == null) {
66+
if (ToXContentUtils.getVersionFromParams(params).onOrAfter(Version.V_5_0_0)) {
67+
QueryBuilders.filteredQuery(queryBuilder, null).doXContent(builder, params);
68+
} else if (filterName == null && cache == null) {
6769
builder.field(QueryFilterParser.NAME);
6870
queryBuilder.toXContent(builder, params);
69-
} else if (ToXContentUtils.getVersionFromParams(params).onOrAfter(Version.V_5_0_0)) {
70-
queryBuilder.toXContent(builder, params);
7171
} else {
7272
builder.startObject(FQueryFilterParser.NAME);
7373
builder.field("query");

src/main/java/org/elasticsearch/index/query/functionscore/FunctionScoreQueryBuilder.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,9 @@
2020
package org.elasticsearch.index.query.functionscore;
2121

2222
import org.elasticsearch.ElasticsearchIllegalArgumentException;
23+
import org.elasticsearch.Version;
2324
import org.elasticsearch.common.lucene.search.function.CombineFunction;
25+
import org.elasticsearch.common.xcontent.ToXContentUtils;
2426
import org.elasticsearch.common.xcontent.XContentBuilder;
2527
import org.elasticsearch.index.query.BaseQueryBuilder;
2628
import org.elasticsearch.index.query.BoostableQueryBuilder;
@@ -131,7 +133,11 @@ protected void doXContent(XContentBuilder builder, Params params) throws IOExcep
131133
builder.field("query");
132134
queryBuilder.toXContent(builder, params);
133135
} else if (filterBuilder != null) {
134-
builder.field("filter");
136+
if (ToXContentUtils.getVersionFromParams(params).onOrAfter(Version.V_5_0_0)) {
137+
builder.field("query");
138+
} else {
139+
builder.field("filter");
140+
}
135141
filterBuilder.toXContent(builder, params);
136142
}
137143
builder.startArray("functions");

src/test/java/org/elasticsearch/client/rest/RestClientTest.java

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,7 @@
106106
import org.junit.Before;
107107
import org.junit.Ignore;
108108
import org.junit.Test;
109+
import org.omg.CORBA.PUBLIC_MEMBER;
109110

110111
import java.io.IOException;
111112
import java.util.*;
@@ -294,6 +295,72 @@ public void testDeleteByQueryScript5_1_1() throws ExecutionException, Interrupte
294295
assert new CountRequestBuilder(client).setQuery(constantScoreQueryBuilder).execute().get().getCount() == 0;
295296
}
296297

298+
@Test
299+
public void testQueryFilterBuilder5_1_1() throws ExecutionException, InterruptedException {
300+
List<IndexResponse> indexResponses = indexDocument(5);
301+
ConstantScoreQueryBuilder constantScoreQueryBuilder = QueryBuilders.constantScoreQuery(FilterBuilders.queryFilter(QueryBuilders.matchQuery("color", "red")));
302+
SearchRequestBuilder searchRequestBuilder = new SearchRequestBuilder(this.client);
303+
searchRequestBuilder.setQuery(constantScoreQueryBuilder);
304+
searchRequestBuilder.setIndices(this.index);
305+
SearchResponse searchResponse = searchRequestBuilder.execute().get();
306+
assert searchResponse.getHits().getTotalHits() != -1;
307+
}
308+
309+
@Test
310+
public void testNestedQueryBuilder5_1_1() throws ExecutionException, InterruptedException {
311+
List<IndexResponse> indexResponses = indexDocument(5);
312+
ConstantScoreQueryBuilder constantScoreQueryBuilder = QueryBuilders.constantScoreQuery(QueryBuilders.nestedQuery("author.books", QueryBuilders.boolQuery().must(QueryBuilders.rangeQuery("author.books.price").from(0))));
313+
SearchRequestBuilder searchRequestBuilder = new SearchRequestBuilder(this.client);
314+
searchRequestBuilder.setQuery(constantScoreQueryBuilder);
315+
searchRequestBuilder.setIndices(this.index);
316+
SearchResponse searchResponse = searchRequestBuilder.execute().get();
317+
assert searchResponse.getHits().getTotalHits() == 5;
318+
}
319+
320+
@Test
321+
public void testNestedQueryBuilderFilter5_1_1() throws ExecutionException, InterruptedException {
322+
List<IndexResponse> indexResponses = indexDocument(5);
323+
ConstantScoreQueryBuilder constantScoreQueryBuilder = QueryBuilders.constantScoreQuery(QueryBuilders.nestedQuery("author.books", FilterBuilders.boolFilter().must(FilterBuilders.rangeFilter("author.books.price").from(0))));
324+
SearchRequestBuilder searchRequestBuilder = new SearchRequestBuilder(this.client);
325+
searchRequestBuilder.setQuery(constantScoreQueryBuilder);
326+
searchRequestBuilder.setIndices(this.index);
327+
SearchResponse searchResponse = searchRequestBuilder.execute().get();
328+
assert searchResponse.getHits().getTotalHits() == 5;
329+
}
330+
331+
@Test
332+
public void testNestedFilterBuilder5_1_1() throws ExecutionException, InterruptedException {
333+
List<IndexResponse> indexResponses = indexDocument(5);
334+
ConstantScoreQueryBuilder constantScoreQueryBuilder = QueryBuilders.constantScoreQuery(FilterBuilders.nestedFilter("author.books", FilterBuilders.boolFilter().must(FilterBuilders.rangeFilter("author.books.price").from(0))));
335+
SearchRequestBuilder searchRequestBuilder = new SearchRequestBuilder(this.client);
336+
searchRequestBuilder.setQuery(constantScoreQueryBuilder);
337+
searchRequestBuilder.setIndices(this.index);
338+
SearchResponse searchResponse = searchRequestBuilder.execute().get();
339+
assert searchResponse.getHits().getTotalHits() == 5;
340+
}
341+
342+
@Test
343+
public void testNestedFilterBuilderQuery5_1_1() throws ExecutionException, InterruptedException {
344+
List<IndexResponse> indexResponses = indexDocument(5);
345+
ConstantScoreQueryBuilder constantScoreQueryBuilder = QueryBuilders.constantScoreQuery(FilterBuilders.nestedFilter("author.books", QueryBuilders.boolQuery().must(QueryBuilders.rangeQuery("author.books.price").from(0))));
346+
SearchRequestBuilder searchRequestBuilder = new SearchRequestBuilder(this.client);
347+
searchRequestBuilder.setQuery(constantScoreQueryBuilder);
348+
searchRequestBuilder.setIndices(this.index);
349+
SearchResponse searchResponse = searchRequestBuilder.execute().get();
350+
assert searchResponse.getHits().getTotalHits() == 5;
351+
}
352+
353+
@Test
354+
public void testMvelPlugin() throws ExecutionException, InterruptedException {
355+
List<IndexResponse> indexResponses = indexDocument(5);
356+
ConstantScoreQueryBuilder constantScoreQueryBuilder = QueryBuilders.constantScoreQuery(FilterBuilders.scriptFilter("field='sentiment';if(doc[field].value!=null) return doc[field].value; else return 0").lang("mvel"));
357+
SearchRequestBuilder searchRequestBuilder = new SearchRequestBuilder(this.client);
358+
searchRequestBuilder.setQuery(constantScoreQueryBuilder);
359+
searchRequestBuilder.setIndices(this.index);
360+
SearchResponse searchResponse = searchRequestBuilder.execute().get();
361+
assert searchResponse.getHits().getTotalHits() == 5;
362+
}
363+
297364
@Test
298365
public void testBulkIndex() throws ExecutionException, InterruptedException {
299366
BulkRequest request = new BulkRequest();

0 commit comments

Comments
 (0)