Explorar o código

defining filter is not always needed, we can assume match all if no filter is given

Britta Weber %!s(int64=12) %!d(string=hai) anos
pai
achega
3162eb4dcf

+ 6 - 5
src/main/java/org/elasticsearch/index/query/functionscore/FunctionScoreQueryBuilder.java

@@ -22,10 +22,7 @@ package org.elasticsearch.index.query.functionscore;
 import org.elasticsearch.ElasticSearchException;
 import org.elasticsearch.common.lucene.search.function.CombineFunction;
 import org.elasticsearch.common.xcontent.XContentBuilder;
-import org.elasticsearch.index.query.BaseQueryBuilder;
-import org.elasticsearch.index.query.BoostableQueryBuilder;
-import org.elasticsearch.index.query.FilterBuilder;
-import org.elasticsearch.index.query.QueryBuilder;
+import org.elasticsearch.index.query.*;
 
 import java.io.IOException;
 import java.util.ArrayList;
@@ -128,7 +125,11 @@ public class FunctionScoreQueryBuilder extends BaseQueryBuilder implements Boost
             for (int i = 0; i < filters.size(); i++) {
                 builder.startObject();
                 builder.field("filter");
-                filters.get(i).toXContent(builder, params);
+                if (filters.get(i) == null) {
+                    FilterBuilders.matchAllFilter().toXContent(builder, params);
+                } else {
+                    filters.get(i).toXContent(builder, params);
+                }
                 scoreFunctions.get(i).toXContent(builder, params);
                 builder.endObject();
             }

+ 3 - 3
src/test/java/org/elasticsearch/search/functionscore/DecayFunctionScoreTests.java

@@ -19,6 +19,7 @@
 
 package org.elasticsearch.search.functionscore;
 
+import org.elasticsearch.AbstractSharedClusterTest;
 import org.elasticsearch.ElasticSearchIllegalStateException;
 import org.elasticsearch.action.ActionFuture;
 import org.elasticsearch.action.index.IndexRequestBuilder;
@@ -32,7 +33,6 @@ import org.elasticsearch.index.query.functionscore.DecayFunctionBuilder;
 import org.elasticsearch.index.query.functionscore.gauss.GaussDecayFunctionBuilder;
 import org.elasticsearch.search.SearchHits;
 import org.elasticsearch.test.hamcrest.ElasticsearchAssertions;
-import org.elasticsearch.AbstractSharedClusterTest;
 import org.junit.Test;
 
 import java.util.ArrayList;
@@ -503,8 +503,8 @@ public class DecayFunctionScoreTests extends AbstractSharedClusterTest {
                 searchRequest().searchType(SearchType.QUERY_THEN_FETCH).source(
                         searchSource().explain(false).query(
                                 functionScoreQuery(termQuery("test", "value"))
-                                        .add(new MatchAllFilterBuilder(), linearDecayFunction("num1", "2013-05-28", "+3d"))
-                                        .add(new MatchAllFilterBuilder(), linearDecayFunction("num2", "0.0", "1")).scoreMode("multiply"))));
+                                        .add(linearDecayFunction("num1", "2013-05-28", "+3d"))
+                                        .add(linearDecayFunction("num2", "0.0", "1")).scoreMode("multiply"))));
 
         SearchResponse sr = response.actionGet();
         ElasticsearchAssertions.assertNoFailures(sr);