Skip to content

Commit 3fdce04

Browse files
committed
Use boost() in queries according to whether they're scorable or not
1 parent 0a2bb77 commit 3fdce04

File tree

33 files changed

+99
-66
lines changed

33 files changed

+99
-66
lines changed

x-pack/plugin/esql-core/src/main/java/org/elasticsearch/xpack/esql/core/querydsl/query/BoolQuery.java

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -43,16 +43,12 @@ public BoolQuery(Source source, boolean isAnd, List<Query> queries) {
4343
}
4444

4545
@Override
46-
public QueryBuilder asBuilder() {
46+
protected QueryBuilder asBuilder() {
4747
BoolQueryBuilder boolQuery = boolQuery();
4848
for (Query query : queries) {
49-
QueryBuilder queryBuilder = query.asBuilder();
49+
QueryBuilder queryBuilder = query.toQueryBuilder();
5050
if (isAnd) {
51-
if (query.scorable()) {
52-
boolQuery.must(queryBuilder);
53-
} else {
54-
boolQuery.filter(queryBuilder);
55-
}
51+
boolQuery.must(queryBuilder);
5652
} else {
5753
boolQuery.should(queryBuilder);
5854
}
@@ -99,4 +95,9 @@ public Query negate(Source source) {
9995
}
10096
return new BoolQuery(source, isAnd == false, negated);
10197
}
98+
99+
@Override
100+
public boolean scorable() {
101+
return true;
102+
}
102103
}

x-pack/plugin/esql-core/src/main/java/org/elasticsearch/xpack/esql/core/querydsl/query/ExistsQuery.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ public ExistsQuery(Source source, String name) {
2121
}
2222

2323
@Override
24-
public QueryBuilder asBuilder() {
24+
protected QueryBuilder asBuilder() {
2525
return existsQuery(name);
2626
}
2727

x-pack/plugin/esql-core/src/main/java/org/elasticsearch/xpack/esql/core/querydsl/query/GeoDistanceQuery.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ public double distance() {
4545
}
4646

4747
@Override
48-
public QueryBuilder asBuilder() {
48+
protected QueryBuilder asBuilder() {
4949
return QueryBuilders.geoDistanceQuery(field).distance(distance, DistanceUnit.METERS).point(lat, lon);
5050
}
5151

x-pack/plugin/esql-core/src/main/java/org/elasticsearch/xpack/esql/core/querydsl/query/MatchAll.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ public MatchAll(Source source) {
1717
}
1818

1919
@Override
20-
public QueryBuilder asBuilder() {
20+
protected QueryBuilder asBuilder() {
2121
return matchAllQuery();
2222
}
2323

x-pack/plugin/esql-core/src/main/java/org/elasticsearch/xpack/esql/core/querydsl/query/NotQuery.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ public Query child() {
3232
}
3333

3434
@Override
35-
public QueryBuilder asBuilder() {
35+
protected QueryBuilder asBuilder() {
3636
return boolQuery().mustNot(child.asBuilder());
3737
}
3838

x-pack/plugin/esql-core/src/main/java/org/elasticsearch/xpack/esql/core/querydsl/query/PrefixQuery.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ public String query() {
3434
}
3535

3636
@Override
37-
public QueryBuilder asBuilder() {
37+
protected QueryBuilder asBuilder() {
3838
return prefixQuery(field, query).caseInsensitive(caseInsensitive);
3939
}
4040

x-pack/plugin/esql-core/src/main/java/org/elasticsearch/xpack/esql/core/querydsl/query/Query.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,11 +44,19 @@ public Source source() {
4444
return source;
4545
}
4646

47+
public final QueryBuilder toQueryBuilder() {
48+
QueryBuilder builder = asBuilder();
49+
if (scorable() == false) {
50+
builder.boost(0.0f);
51+
}
52+
return builder;
53+
}
54+
4755
/**
4856
* Convert to an Elasticsearch {@link QueryBuilder} all set up to execute
4957
* the query.
5058
*/
51-
public abstract QueryBuilder asBuilder();
59+
protected abstract QueryBuilder asBuilder();
5260

5361
/**
5462
* Used by {@link Query#toString()} to produce a pretty string.

x-pack/plugin/esql-core/src/main/java/org/elasticsearch/xpack/esql/core/querydsl/query/QueryStringQuery.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ public QueryStringQuery(Source source, String query, Map<String, Float> fields,
6464
}
6565

6666
@Override
67-
public QueryBuilder asBuilder() {
67+
protected QueryBuilder asBuilder() {
6868
final QueryStringQueryBuilder queryBuilder = QueryBuilders.queryStringQuery(query);
6969
queryBuilder.fields(fields);
7070
options.forEach((k, v) -> {
@@ -108,4 +108,9 @@ public boolean equals(Object obj) {
108108
protected String innerToString() {
109109
return fields + ":" + query;
110110
}
111+
112+
@Override
113+
public boolean scorable() {
114+
return true;
115+
}
111116
}

x-pack/plugin/esql-core/src/main/java/org/elasticsearch/xpack/esql/core/querydsl/query/RangeQuery.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ public ZoneId zoneId() {
7777
}
7878

7979
@Override
80-
public QueryBuilder asBuilder() {
80+
protected QueryBuilder asBuilder() {
8181
RangeQueryBuilder queryBuilder = rangeQuery(field).from(lower, includeLower).to(upper, includeUpper);
8282
if (Strings.hasText(format)) {
8383
queryBuilder.format(format);

x-pack/plugin/esql-core/src/main/java/org/elasticsearch/xpack/esql/core/querydsl/query/RegexQuery.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ public Boolean caseInsensitive() {
4242
}
4343

4444
@Override
45-
public QueryBuilder asBuilder() {
45+
protected QueryBuilder asBuilder() {
4646
return regexpQuery(field, regex).caseInsensitive(caseInsensitive);
4747
}
4848

0 commit comments

Comments
 (0)