Skip to content

Commit 690184e

Browse files
committed
Fix RegexpQueryBuilder to support an Object value
The parser takes an Object value, so should the builder. Relates to elastic#11896
1 parent 1d7fc6b commit 690184e

File tree

1 file changed

+71
-10
lines changed

1 file changed

+71
-10
lines changed

core/src/main/java/org/elasticsearch/index/query/RegexpQueryBuilder.java

Lines changed: 71 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,8 @@
2929
*/
3030
public class RegexpQueryBuilder extends MultiTermQueryBuilder implements BoostableQueryBuilder<RegexpQueryBuilder> {
3131

32-
private final String name;
33-
private final String regexp;
32+
private final String fieldName;
33+
private final Object value;
3434

3535
private int flags = -1;
3636
private float boost = -1;
@@ -40,14 +40,75 @@ public class RegexpQueryBuilder extends MultiTermQueryBuilder implements Boostab
4040
private boolean maxDetermizedStatesSet;
4141

4242
/**
43-
* Constructs a new term query.
43+
* Constructs a new regex query.
4444
*
45-
* @param name The name of the field
46-
* @param regexp The regular expression
45+
* @param fieldName The name of the field
46+
* @param value The regular expression
4747
*/
48-
public RegexpQueryBuilder(String name, String regexp) {
49-
this.name = name;
50-
this.regexp = regexp;
48+
public RegexpQueryBuilder(String fieldName, String value) {
49+
this(fieldName, (Object) value);
50+
}
51+
52+
/**
53+
* Constructs a new regex query.
54+
*
55+
* @param fieldName The name of the field
56+
* @param value The regular expression
57+
*/
58+
public RegexpQueryBuilder(String fieldName, int value) {
59+
this(fieldName, (Object) value);
60+
}
61+
62+
/**
63+
* Constructs a new regex query.
64+
*
65+
* @param fieldName The name of the field
66+
* @param value The regular expression
67+
*/
68+
public RegexpQueryBuilder(String fieldName, long value) {
69+
this(fieldName, (Object) value);
70+
}
71+
72+
/**
73+
* Constructs a new regex query.
74+
*
75+
* @param fieldName The name of the field
76+
* @param value The regular expression
77+
*/
78+
public RegexpQueryBuilder(String fieldName, float value) {
79+
this(fieldName, (Object) value);
80+
}
81+
82+
/**
83+
* Constructs a new regex query.
84+
*
85+
* @param fieldName The name of the field
86+
* @param value The regular expression
87+
*/
88+
public RegexpQueryBuilder(String fieldName, double value) {
89+
this(fieldName, (Object) value);
90+
}
91+
92+
/**
93+
* Constructs a new regex query.
94+
*
95+
* @param fieldName The name of the field
96+
* @param value The regular expression
97+
*/
98+
public RegexpQueryBuilder(String fieldName, boolean value) {
99+
this(fieldName, (Object) value);
100+
}
101+
102+
/**
103+
* Constructs a new regex query.
104+
* In case value is assigned to a string, we internally convert it to a {@link org.apache.lucene.util.BytesRef}
105+
*
106+
* @param fieldName The name of the field
107+
* @param value The regular expression
108+
*/
109+
public RegexpQueryBuilder(String fieldName, Object value) {
110+
this.fieldName = fieldName;
111+
this.value = value;
51112
}
52113

53114
/**
@@ -98,8 +159,8 @@ public RegexpQueryBuilder queryName(String queryName) {
98159
@Override
99160
public void doXContent(XContentBuilder builder, Params params) throws IOException {
100161
builder.startObject(RegexpQueryParser.NAME);
101-
builder.startObject(name);
102-
builder.field("value", regexp);
162+
builder.startObject(fieldName);
163+
builder.field("value", value);
103164
if (flags != -1) {
104165
builder.field("flags_value", flags);
105166
}

0 commit comments

Comments
 (0)