[Remove] Type from Percolate query API (#2490)
* [Remove] Type from Percolator query API Signed-off-by: Suraj Singh <surajrider@gmail.com> * Address review comment Signed-off-by: Suraj Singh <surajrider@gmail.com>
This commit is contained in:
parent
b9f04405d6
commit
9f83deadf4
|
@ -397,14 +397,14 @@ public class PercolatorQuerySearchIT extends OpenSearchIntegTestCase {
|
|||
|
||||
logger.info("percolating empty doc");
|
||||
SearchResponse response = client().prepareSearch()
|
||||
.setQuery(new PercolateQueryBuilder("query", "test", "type", "1", null, null, null))
|
||||
.setQuery(new PercolateQueryBuilder("query", "test", "1", null, null, null))
|
||||
.get();
|
||||
assertHitCount(response, 1);
|
||||
assertThat(response.getHits().getAt(0).getId(), equalTo("1"));
|
||||
|
||||
logger.info("percolating doc with 1 field");
|
||||
response = client().prepareSearch()
|
||||
.setQuery(new PercolateQueryBuilder("query", "test", "type", "5", null, null, null))
|
||||
.setQuery(new PercolateQueryBuilder("query", "test", "5", null, null, null))
|
||||
.addSort("id", SortOrder.ASC)
|
||||
.get();
|
||||
assertHitCount(response, 2);
|
||||
|
@ -413,7 +413,7 @@ public class PercolatorQuerySearchIT extends OpenSearchIntegTestCase {
|
|||
|
||||
logger.info("percolating doc with 2 fields");
|
||||
response = client().prepareSearch()
|
||||
.setQuery(new PercolateQueryBuilder("query", "test", "type", "6", null, null, null))
|
||||
.setQuery(new PercolateQueryBuilder("query", "test", "6", null, null, null))
|
||||
.addSort("id", SortOrder.ASC)
|
||||
.get();
|
||||
assertHitCount(response, 3);
|
||||
|
@ -438,7 +438,7 @@ public class PercolatorQuerySearchIT extends OpenSearchIntegTestCase {
|
|||
logger.info("percolating empty doc with source disabled");
|
||||
IllegalArgumentException e = expectThrows(
|
||||
IllegalArgumentException.class,
|
||||
() -> { client().prepareSearch().setQuery(new PercolateQueryBuilder("query", "test", "type", "1", null, null, null)).get(); }
|
||||
() -> { client().prepareSearch().setQuery(new PercolateQueryBuilder("query", "test", "1", null, null, null)).get(); }
|
||||
);
|
||||
assertThat(e.getMessage(), containsString("source disabled"));
|
||||
}
|
||||
|
@ -1193,10 +1193,10 @@ public class PercolatorQuerySearchIT extends OpenSearchIntegTestCase {
|
|||
)
|
||||
)
|
||||
)
|
||||
.add(client().prepareSearch("test").setQuery(new PercolateQueryBuilder("query", "test", "type", "5", null, null, null)))
|
||||
.add(client().prepareSearch("test").setQuery(new PercolateQueryBuilder("query", "test", "5", null, null, null)))
|
||||
.add(
|
||||
client().prepareSearch("test") // non existing doc, so error element
|
||||
.setQuery(new PercolateQueryBuilder("query", "test", "type", "6", null, null, null))
|
||||
.setQuery(new PercolateQueryBuilder("query", "test", "6", null, null, null))
|
||||
)
|
||||
.get();
|
||||
|
||||
|
@ -1228,7 +1228,7 @@ public class PercolatorQuerySearchIT extends OpenSearchIntegTestCase {
|
|||
item = response.getResponses()[5];
|
||||
assertThat(item.getResponse(), nullValue());
|
||||
assertThat(item.getFailureMessage(), notNullValue());
|
||||
assertThat(item.getFailureMessage(), containsString("[test/type/6] couldn't be found"));
|
||||
assertThat(item.getFailureMessage(), containsString("[test/6] couldn't be found"));
|
||||
}
|
||||
|
||||
public void testDisallowExpensiveQueries() throws IOException {
|
||||
|
|
|
@ -67,7 +67,6 @@ import org.opensearch.common.io.stream.NamedWriteableAwareStreamInput;
|
|||
import org.opensearch.common.io.stream.NamedWriteableRegistry;
|
||||
import org.opensearch.common.io.stream.StreamInput;
|
||||
import org.opensearch.common.io.stream.StreamOutput;
|
||||
import org.opensearch.common.logging.DeprecationLogger;
|
||||
import org.opensearch.common.xcontent.ConstructingObjectParser;
|
||||
import org.opensearch.common.xcontent.LoggingDeprecationHandler;
|
||||
import org.opensearch.common.xcontent.NamedXContentRegistry;
|
||||
|
@ -111,19 +110,11 @@ import static org.opensearch.search.SearchService.ALLOW_EXPENSIVE_QUERIES;
|
|||
public class PercolateQueryBuilder extends AbstractQueryBuilder<PercolateQueryBuilder> {
|
||||
public static final String NAME = "percolate";
|
||||
|
||||
private static final DeprecationLogger deprecationLogger = DeprecationLogger.getLogger(ParseField.class);
|
||||
static final String DOCUMENT_TYPE_DEPRECATION_MESSAGE = "[types removal] Types are deprecated in [percolate] queries. "
|
||||
+ "The [document_type] should no longer be specified.";
|
||||
static final String TYPE_DEPRECATION_MESSAGE = "[types removal] Types are deprecated in [percolate] queries. "
|
||||
+ "The [type] of the indexed document should no longer be specified.";
|
||||
|
||||
static final ParseField DOCUMENT_FIELD = new ParseField("document");
|
||||
static final ParseField DOCUMENTS_FIELD = new ParseField("documents");
|
||||
private static final ParseField NAME_FIELD = new ParseField("name");
|
||||
private static final ParseField QUERY_FIELD = new ParseField("field");
|
||||
private static final ParseField DOCUMENT_TYPE_FIELD = new ParseField("document_type");
|
||||
private static final ParseField INDEXED_DOCUMENT_FIELD_INDEX = new ParseField("index");
|
||||
private static final ParseField INDEXED_DOCUMENT_FIELD_TYPE = new ParseField("type");
|
||||
private static final ParseField INDEXED_DOCUMENT_FIELD_ID = new ParseField("id");
|
||||
private static final ParseField INDEXED_DOCUMENT_FIELD_ROUTING = new ParseField("routing");
|
||||
private static final ParseField INDEXED_DOCUMENT_FIELD_PREFERENCE = new ParseField("preference");
|
||||
|
@ -131,29 +122,16 @@ public class PercolateQueryBuilder extends AbstractQueryBuilder<PercolateQueryBu
|
|||
|
||||
private final String field;
|
||||
private String name;
|
||||
@Deprecated
|
||||
private final String documentType;
|
||||
private final List<BytesReference> documents;
|
||||
private final XContentType documentXContentType;
|
||||
|
||||
private final String indexedDocumentIndex;
|
||||
@Deprecated
|
||||
private final String indexedDocumentType;
|
||||
private final String indexedDocumentId;
|
||||
private final String indexedDocumentRouting;
|
||||
private final String indexedDocumentPreference;
|
||||
private final Long indexedDocumentVersion;
|
||||
private final Supplier<BytesReference> documentSupplier;
|
||||
|
||||
/**
|
||||
* @deprecated use {@link #PercolateQueryBuilder(String, BytesReference, XContentType)} with the document content
|
||||
* type to avoid autodetection.
|
||||
*/
|
||||
@Deprecated
|
||||
public PercolateQueryBuilder(String field, String documentType, BytesReference document) {
|
||||
this(field, documentType, Collections.singletonList(document), XContentHelper.xContentType(document));
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a percolator query builder instance for percolating a provided document.
|
||||
*
|
||||
|
@ -162,7 +140,7 @@ public class PercolateQueryBuilder extends AbstractQueryBuilder<PercolateQueryBu
|
|||
* @param documentXContentType The content type of the binary blob containing the document to percolate
|
||||
*/
|
||||
public PercolateQueryBuilder(String field, BytesReference document, XContentType documentXContentType) {
|
||||
this(field, null, Collections.singletonList(document), documentXContentType);
|
||||
this(field, Collections.singletonList(document), documentXContentType);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -173,11 +151,6 @@ public class PercolateQueryBuilder extends AbstractQueryBuilder<PercolateQueryBu
|
|||
* @param documentXContentType The content type of the binary blob containing the document to percolate
|
||||
*/
|
||||
public PercolateQueryBuilder(String field, List<BytesReference> documents, XContentType documentXContentType) {
|
||||
this(field, null, documents, documentXContentType);
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public PercolateQueryBuilder(String field, String documentType, List<BytesReference> documents, XContentType documentXContentType) {
|
||||
if (field == null) {
|
||||
throw new IllegalArgumentException("[field] is a required argument");
|
||||
}
|
||||
|
@ -185,11 +158,9 @@ public class PercolateQueryBuilder extends AbstractQueryBuilder<PercolateQueryBu
|
|||
throw new IllegalArgumentException("[document] is a required argument");
|
||||
}
|
||||
this.field = field;
|
||||
this.documentType = documentType;
|
||||
this.documents = documents;
|
||||
this.documentXContentType = Objects.requireNonNull(documentXContentType);
|
||||
indexedDocumentIndex = null;
|
||||
indexedDocumentType = null;
|
||||
indexedDocumentId = null;
|
||||
indexedDocumentRouting = null;
|
||||
indexedDocumentPreference = null;
|
||||
|
@ -197,29 +168,11 @@ public class PercolateQueryBuilder extends AbstractQueryBuilder<PercolateQueryBu
|
|||
this.documentSupplier = null;
|
||||
}
|
||||
|
||||
protected PercolateQueryBuilder(String field, String documentType, Supplier<BytesReference> documentSupplier) {
|
||||
if (field == null) {
|
||||
throw new IllegalArgumentException("[field] is a required argument");
|
||||
}
|
||||
this.field = field;
|
||||
this.documentType = documentType;
|
||||
this.documents = Collections.emptyList();
|
||||
this.documentXContentType = null;
|
||||
this.documentSupplier = documentSupplier;
|
||||
indexedDocumentIndex = null;
|
||||
indexedDocumentType = null;
|
||||
indexedDocumentId = null;
|
||||
indexedDocumentRouting = null;
|
||||
indexedDocumentPreference = null;
|
||||
indexedDocumentVersion = null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a percolator query builder instance for percolating a document in a remote index.
|
||||
*
|
||||
* @param field The field that contains the percolator query
|
||||
* @param indexedDocumentIndex The index containing the document to percolate
|
||||
* @param indexedDocumentType The type containing the document to percolate
|
||||
* @param indexedDocumentId The id of the document to percolate
|
||||
* @param indexedDocumentRouting The routing value for the document to percolate
|
||||
* @param indexedDocumentPreference The preference to use when fetching the document to percolate
|
||||
|
@ -228,30 +181,6 @@ public class PercolateQueryBuilder extends AbstractQueryBuilder<PercolateQueryBu
|
|||
public PercolateQueryBuilder(
|
||||
String field,
|
||||
String indexedDocumentIndex,
|
||||
String indexedDocumentType,
|
||||
String indexedDocumentId,
|
||||
String indexedDocumentRouting,
|
||||
String indexedDocumentPreference,
|
||||
Long indexedDocumentVersion
|
||||
) {
|
||||
this(
|
||||
field,
|
||||
null,
|
||||
indexedDocumentIndex,
|
||||
indexedDocumentType,
|
||||
indexedDocumentId,
|
||||
indexedDocumentRouting,
|
||||
indexedDocumentPreference,
|
||||
indexedDocumentVersion
|
||||
);
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public PercolateQueryBuilder(
|
||||
String field,
|
||||
String documentType,
|
||||
String indexedDocumentIndex,
|
||||
String indexedDocumentType,
|
||||
String indexedDocumentId,
|
||||
String indexedDocumentRouting,
|
||||
String indexedDocumentPreference,
|
||||
|
@ -267,9 +196,7 @@ public class PercolateQueryBuilder extends AbstractQueryBuilder<PercolateQueryBu
|
|||
throw new IllegalArgumentException("[id] is a required argument");
|
||||
}
|
||||
this.field = field;
|
||||
this.documentType = documentType;
|
||||
this.indexedDocumentIndex = indexedDocumentIndex;
|
||||
this.indexedDocumentType = indexedDocumentType;
|
||||
this.indexedDocumentId = indexedDocumentId;
|
||||
this.indexedDocumentRouting = indexedDocumentRouting;
|
||||
this.indexedDocumentPreference = indexedDocumentPreference;
|
||||
|
@ -279,6 +206,21 @@ public class PercolateQueryBuilder extends AbstractQueryBuilder<PercolateQueryBu
|
|||
this.documentSupplier = null;
|
||||
}
|
||||
|
||||
protected PercolateQueryBuilder(String field, Supplier<BytesReference> documentSupplier) {
|
||||
if (field == null) {
|
||||
throw new IllegalArgumentException("[field] is a required argument");
|
||||
}
|
||||
this.field = field;
|
||||
this.documents = Collections.emptyList();
|
||||
this.documentXContentType = null;
|
||||
this.documentSupplier = documentSupplier;
|
||||
indexedDocumentIndex = null;
|
||||
indexedDocumentId = null;
|
||||
indexedDocumentRouting = null;
|
||||
indexedDocumentPreference = null;
|
||||
indexedDocumentVersion = null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Read from a stream.
|
||||
*/
|
||||
|
@ -286,9 +228,20 @@ public class PercolateQueryBuilder extends AbstractQueryBuilder<PercolateQueryBu
|
|||
super(in);
|
||||
field = in.readString();
|
||||
name = in.readOptionalString();
|
||||
documentType = in.readOptionalString();
|
||||
if (in.getVersion().before(Version.V_2_0_0)) {
|
||||
String documentType = in.readOptionalString();
|
||||
if (documentType != null) {
|
||||
throw new IllegalStateException("documentType must be null");
|
||||
}
|
||||
}
|
||||
indexedDocumentIndex = in.readOptionalString();
|
||||
indexedDocumentType = in.readOptionalString();
|
||||
if (in.getVersion().before(Version.V_2_0_0)) {
|
||||
String indexedDocumentType = in.readOptionalString();
|
||||
if (indexedDocumentType != null) {
|
||||
throw new IllegalStateException("indexedDocumentType must be null");
|
||||
}
|
||||
}
|
||||
|
||||
indexedDocumentId = in.readOptionalString();
|
||||
indexedDocumentRouting = in.readOptionalString();
|
||||
indexedDocumentPreference = in.readOptionalString();
|
||||
|
@ -322,9 +275,15 @@ public class PercolateQueryBuilder extends AbstractQueryBuilder<PercolateQueryBu
|
|||
}
|
||||
out.writeString(field);
|
||||
out.writeOptionalString(name);
|
||||
out.writeOptionalString(documentType);
|
||||
if (out.getVersion().before(Version.V_2_0_0)) {
|
||||
// In 7x, typeless percolate queries are represented by null documentType values
|
||||
out.writeOptionalString(null);
|
||||
}
|
||||
out.writeOptionalString(indexedDocumentIndex);
|
||||
out.writeOptionalString(indexedDocumentType);
|
||||
if (out.getVersion().before(Version.V_2_0_0)) {
|
||||
// In 7x, typeless percolate queries are represented by null indexedDocumentType values
|
||||
out.writeOptionalString(null);
|
||||
}
|
||||
out.writeOptionalString(indexedDocumentId);
|
||||
out.writeOptionalString(indexedDocumentRouting);
|
||||
out.writeOptionalString(indexedDocumentPreference);
|
||||
|
@ -346,7 +305,6 @@ public class PercolateQueryBuilder extends AbstractQueryBuilder<PercolateQueryBu
|
|||
@Override
|
||||
protected void doXContent(XContentBuilder builder, Params params) throws IOException {
|
||||
builder.startObject(NAME);
|
||||
builder.field(DOCUMENT_TYPE_FIELD.getPreferredName(), documentType);
|
||||
builder.field(QUERY_FIELD.getPreferredName(), field);
|
||||
if (name != null) {
|
||||
builder.field(NAME_FIELD.getPreferredName(), name);
|
||||
|
@ -367,13 +325,10 @@ public class PercolateQueryBuilder extends AbstractQueryBuilder<PercolateQueryBu
|
|||
}
|
||||
builder.endArray();
|
||||
}
|
||||
if (indexedDocumentIndex != null || indexedDocumentType != null || indexedDocumentId != null) {
|
||||
if (indexedDocumentIndex != null || indexedDocumentId != null) {
|
||||
if (indexedDocumentIndex != null) {
|
||||
builder.field(INDEXED_DOCUMENT_FIELD_INDEX.getPreferredName(), indexedDocumentIndex);
|
||||
}
|
||||
if (indexedDocumentType != null) {
|
||||
builder.field(INDEXED_DOCUMENT_FIELD_TYPE.getPreferredName(), indexedDocumentType);
|
||||
}
|
||||
if (indexedDocumentId != null) {
|
||||
builder.field(INDEXED_DOCUMENT_FIELD_ID.getPreferredName(), indexedDocumentId);
|
||||
}
|
||||
|
@ -401,23 +356,12 @@ public class PercolateQueryBuilder extends AbstractQueryBuilder<PercolateQueryBu
|
|||
String indexDocRouting = (String) args[5];
|
||||
String indexDocPreference = (String) args[6];
|
||||
Long indexedDocVersion = (Long) args[7];
|
||||
String indexedDocType = (String) args[8];
|
||||
String docType = (String) args[9];
|
||||
if (indexedDocId != null) {
|
||||
return new PercolateQueryBuilder(
|
||||
field,
|
||||
docType,
|
||||
indexedDocIndex,
|
||||
indexedDocType,
|
||||
indexedDocId,
|
||||
indexDocRouting,
|
||||
indexDocPreference,
|
||||
indexedDocVersion
|
||||
);
|
||||
return new PercolateQueryBuilder(field, indexedDocIndex, indexedDocId, indexDocRouting, indexDocPreference, indexedDocVersion);
|
||||
} else if (document != null) {
|
||||
return new PercolateQueryBuilder(field, docType, Collections.singletonList(document), XContentType.JSON);
|
||||
return new PercolateQueryBuilder(field, Collections.singletonList(document), XContentType.JSON);
|
||||
} else {
|
||||
return new PercolateQueryBuilder(field, docType, documents, XContentType.JSON);
|
||||
return new PercolateQueryBuilder(field, documents, XContentType.JSON);
|
||||
}
|
||||
});
|
||||
static {
|
||||
|
@ -429,8 +373,6 @@ public class PercolateQueryBuilder extends AbstractQueryBuilder<PercolateQueryBu
|
|||
PARSER.declareString(optionalConstructorArg(), INDEXED_DOCUMENT_FIELD_ROUTING);
|
||||
PARSER.declareString(optionalConstructorArg(), INDEXED_DOCUMENT_FIELD_PREFERENCE);
|
||||
PARSER.declareLong(optionalConstructorArg(), INDEXED_DOCUMENT_FIELD_VERSION);
|
||||
PARSER.declareStringOrNull(optionalConstructorArg(), INDEXED_DOCUMENT_FIELD_TYPE);
|
||||
PARSER.declareStringOrNull(optionalConstructorArg(), DOCUMENT_TYPE_FIELD);
|
||||
PARSER.declareString(PercolateQueryBuilder::setName, NAME_FIELD);
|
||||
PARSER.declareString(PercolateQueryBuilder::queryName, AbstractQueryBuilder.NAME_FIELD);
|
||||
PARSER.declareFloat(PercolateQueryBuilder::boost, BOOST_FIELD);
|
||||
|
@ -461,10 +403,8 @@ public class PercolateQueryBuilder extends AbstractQueryBuilder<PercolateQueryBu
|
|||
@Override
|
||||
protected boolean doEquals(PercolateQueryBuilder other) {
|
||||
return Objects.equals(field, other.field)
|
||||
&& Objects.equals(documentType, other.documentType)
|
||||
&& Objects.equals(documents, other.documents)
|
||||
&& Objects.equals(indexedDocumentIndex, other.indexedDocumentIndex)
|
||||
&& Objects.equals(indexedDocumentType, other.indexedDocumentType)
|
||||
&& Objects.equals(documentSupplier, other.documentSupplier)
|
||||
&& Objects.equals(indexedDocumentId, other.indexedDocumentId);
|
||||
|
||||
|
@ -472,7 +412,7 @@ public class PercolateQueryBuilder extends AbstractQueryBuilder<PercolateQueryBu
|
|||
|
||||
@Override
|
||||
protected int doHashCode() {
|
||||
return Objects.hash(field, documentType, documents, indexedDocumentIndex, indexedDocumentType, indexedDocumentId, documentSupplier);
|
||||
return Objects.hash(field, documents, indexedDocumentIndex, indexedDocumentId, documentSupplier);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -491,7 +431,6 @@ public class PercolateQueryBuilder extends AbstractQueryBuilder<PercolateQueryBu
|
|||
} else {
|
||||
PercolateQueryBuilder rewritten = new PercolateQueryBuilder(
|
||||
field,
|
||||
documentType,
|
||||
Collections.singletonList(source),
|
||||
XContentHelper.xContentType(source)
|
||||
);
|
||||
|
@ -513,20 +452,14 @@ public class PercolateQueryBuilder extends AbstractQueryBuilder<PercolateQueryBu
|
|||
client.get(getRequest, ActionListener.wrap(getResponse -> {
|
||||
if (getResponse.isExists() == false) {
|
||||
throw new ResourceNotFoundException(
|
||||
"indexed document [{}{}/{}] couldn't be found",
|
||||
"indexed document [{}/{}] couldn't be found",
|
||||
indexedDocumentIndex,
|
||||
indexedDocumentType == null ? "" : "/" + indexedDocumentType,
|
||||
indexedDocumentId
|
||||
);
|
||||
}
|
||||
if (getResponse.isSourceEmpty()) {
|
||||
throw new IllegalArgumentException(
|
||||
"indexed document ["
|
||||
+ indexedDocumentIndex
|
||||
+ (indexedDocumentType == null ? "" : "/" + indexedDocumentType)
|
||||
+ "/"
|
||||
+ indexedDocumentId
|
||||
+ "] source disabled"
|
||||
"indexed document [" + indexedDocumentIndex + "/" + indexedDocumentId + "] source disabled"
|
||||
);
|
||||
}
|
||||
documentSupplier.set(getResponse.getSourceAsBytesRef());
|
||||
|
@ -534,7 +467,7 @@ public class PercolateQueryBuilder extends AbstractQueryBuilder<PercolateQueryBu
|
|||
}, listener::onFailure));
|
||||
});
|
||||
|
||||
PercolateQueryBuilder rewritten = new PercolateQueryBuilder(field, documentType, documentSupplier::get);
|
||||
PercolateQueryBuilder rewritten = new PercolateQueryBuilder(field, documentSupplier::get);
|
||||
if (name != null) {
|
||||
rewritten.setName(name);
|
||||
}
|
||||
|
@ -576,14 +509,6 @@ public class PercolateQueryBuilder extends AbstractQueryBuilder<PercolateQueryBu
|
|||
final DocumentMapper docMapper;
|
||||
final MapperService mapperService = context.getMapperService();
|
||||
String type = mapperService.documentMapper().type();
|
||||
if (documentType != null) {
|
||||
deprecationLogger.deprecate("percolate_with_document_type", DOCUMENT_TYPE_DEPRECATION_MESSAGE);
|
||||
if (documentType.equals(type) == false) {
|
||||
throw new IllegalArgumentException(
|
||||
"specified document_type [" + documentType + "] is not equal to the actual type [" + type + "]"
|
||||
);
|
||||
}
|
||||
}
|
||||
docMapper = mapperService.documentMapper();
|
||||
for (BytesReference document : documents) {
|
||||
docs.add(docMapper.parse(new SourceToParse(context.index().getName(), "_temp_id", document, documentXContentType)));
|
||||
|
@ -631,10 +556,6 @@ public class PercolateQueryBuilder extends AbstractQueryBuilder<PercolateQueryBu
|
|||
return field;
|
||||
}
|
||||
|
||||
public String getDocumentType() {
|
||||
return documentType;
|
||||
}
|
||||
|
||||
public List<BytesReference> getDocuments() {
|
||||
return documents;
|
||||
}
|
||||
|
|
|
@ -148,16 +148,14 @@ public class PercolateQueryBuilderTests extends AbstractQueryTestCase<PercolateQ
|
|||
indexedDocumentVersion = (long) randomIntBetween(0, Integer.MAX_VALUE);
|
||||
queryBuilder = new PercolateQueryBuilder(
|
||||
queryField,
|
||||
null,
|
||||
indexedDocumentIndex,
|
||||
null,
|
||||
indexedDocumentId,
|
||||
indexedDocumentRouting,
|
||||
indexedDocumentPreference,
|
||||
indexedDocumentVersion
|
||||
);
|
||||
} else {
|
||||
queryBuilder = new PercolateQueryBuilder(queryField, null, documentSource, XContentType.JSON);
|
||||
queryBuilder = new PercolateQueryBuilder(queryField, documentSource, XContentType.JSON);
|
||||
}
|
||||
if (randomBoolean()) {
|
||||
queryBuilder.setName(randomAlphaOfLength(4));
|
||||
|
@ -217,7 +215,6 @@ public class PercolateQueryBuilderTests extends AbstractQueryTestCase<PercolateQ
|
|||
protected void doAssertLuceneQuery(PercolateQueryBuilder queryBuilder, Query query, QueryShardContext context) throws IOException {
|
||||
assertThat(query, Matchers.instanceOf(PercolateQuery.class));
|
||||
PercolateQuery percolateQuery = (PercolateQuery) query;
|
||||
assertNull(queryBuilder.getDocumentType());
|
||||
assertThat(percolateQuery.getDocuments(), Matchers.equalTo(documentSource));
|
||||
}
|
||||
|
||||
|
@ -227,12 +224,7 @@ public class PercolateQueryBuilderTests extends AbstractQueryTestCase<PercolateQ
|
|||
IllegalStateException e = expectThrows(IllegalStateException.class, () -> pqb.toQuery(createShardContext()));
|
||||
assertThat(e.getMessage(), equalTo("query builder must be rewritten first"));
|
||||
QueryBuilder rewrite = rewriteAndFetch(pqb, createShardContext());
|
||||
PercolateQueryBuilder geoShapeQueryBuilder = new PercolateQueryBuilder(
|
||||
pqb.getField(),
|
||||
pqb.getDocumentType(),
|
||||
documentSource,
|
||||
XContentType.JSON
|
||||
);
|
||||
PercolateQueryBuilder geoShapeQueryBuilder = new PercolateQueryBuilder(pqb.getField(), documentSource, XContentType.JSON);
|
||||
assertEquals(geoShapeQueryBuilder, rewrite);
|
||||
}
|
||||
|
||||
|
@ -259,25 +251,19 @@ public class PercolateQueryBuilderTests extends AbstractQueryTestCase<PercolateQ
|
|||
);
|
||||
assertThat(e.getMessage(), equalTo("[field] is a required argument"));
|
||||
|
||||
e = expectThrows(IllegalArgumentException.class, () -> new PercolateQueryBuilder("_field", "_document_type", null, null));
|
||||
e = expectThrows(
|
||||
IllegalArgumentException.class,
|
||||
() -> new PercolateQueryBuilder("_field", (List<BytesReference>) null, XContentType.JSON)
|
||||
);
|
||||
assertThat(e.getMessage(), equalTo("[document] is a required argument"));
|
||||
|
||||
e = expectThrows(
|
||||
IllegalArgumentException.class,
|
||||
() -> { new PercolateQueryBuilder(null, null, "_index", "_type", "_id", null, null, null); }
|
||||
);
|
||||
e = expectThrows(IllegalArgumentException.class, () -> { new PercolateQueryBuilder(null, "_index", "_id", null, null, null); });
|
||||
assertThat(e.getMessage(), equalTo("[field] is a required argument"));
|
||||
|
||||
e = expectThrows(
|
||||
IllegalArgumentException.class,
|
||||
() -> { new PercolateQueryBuilder("_field", "_document_type", null, "_type", "_id", null, null, null); }
|
||||
);
|
||||
e = expectThrows(IllegalArgumentException.class, () -> { new PercolateQueryBuilder("_field", null, "_id", null, null, null); });
|
||||
assertThat(e.getMessage(), equalTo("[index] is a required argument"));
|
||||
|
||||
e = expectThrows(
|
||||
IllegalArgumentException.class,
|
||||
() -> { new PercolateQueryBuilder("_field", "_document_type", "_index", "_type", null, null, null, null); }
|
||||
);
|
||||
e = expectThrows(IllegalArgumentException.class, () -> { new PercolateQueryBuilder("_field", "_index", null, null, null, null); });
|
||||
assertThat(e.getMessage(), equalTo("[id] is a required argument"));
|
||||
}
|
||||
|
||||
|
@ -287,15 +273,6 @@ public class PercolateQueryBuilderTests extends AbstractQueryTestCase<PercolateQ
|
|||
queryBuilder.toQuery(queryShardContext);
|
||||
}
|
||||
|
||||
public void testFromJsonWithDocumentType() throws IOException {
|
||||
QueryShardContext queryShardContext = createShardContext();
|
||||
QueryBuilder queryBuilder = parseQuery(
|
||||
"{\"percolate\" : { \"document\": {}, \"document_type\":\"" + docType + "\", \"field\":\"" + queryField + "\"}}"
|
||||
);
|
||||
queryBuilder.toQuery(queryShardContext);
|
||||
assertWarnings(PercolateQueryBuilder.DOCUMENT_TYPE_DEPRECATION_MESSAGE);
|
||||
}
|
||||
|
||||
public void testFromJsonNoType() throws IOException {
|
||||
indexedDocumentIndex = randomAlphaOfLength(4);
|
||||
indexedDocumentId = randomAlphaOfLength(4);
|
||||
|
@ -315,25 +292,6 @@ public class PercolateQueryBuilderTests extends AbstractQueryTestCase<PercolateQ
|
|||
rewriteAndFetch(queryBuilder, queryShardContext).toQuery(queryShardContext);
|
||||
}
|
||||
|
||||
public void testFromJsonWithType() throws IOException {
|
||||
indexedDocumentIndex = randomAlphaOfLength(4);
|
||||
indexedDocumentId = randomAlphaOfLength(4);
|
||||
indexedDocumentVersion = Versions.MATCH_ANY;
|
||||
documentSource = Collections.singletonList(randomSource(new HashSet<>()));
|
||||
|
||||
QueryShardContext queryShardContext = createShardContext();
|
||||
QueryBuilder queryBuilder = parseQuery(
|
||||
"{\"percolate\" : { \"index\": \""
|
||||
+ indexedDocumentIndex
|
||||
+ "\", \"type\": \"_doc\", \"id\": \""
|
||||
+ indexedDocumentId
|
||||
+ "\", \"field\":\""
|
||||
+ queryField
|
||||
+ "\"}}"
|
||||
);
|
||||
rewriteAndFetch(queryBuilder, queryShardContext).toQuery(queryShardContext);
|
||||
}
|
||||
|
||||
public void testBothDocumentAndDocumentsSpecified() {
|
||||
IllegalArgumentException e = expectThrows(
|
||||
IllegalArgumentException.class,
|
||||
|
@ -426,7 +384,7 @@ public class PercolateQueryBuilderTests extends AbstractQueryTestCase<PercolateQ
|
|||
Supplier<BytesReference> supplier = () -> new BytesArray("{\"test\": \"test\"}");
|
||||
String testName = "name1";
|
||||
QueryShardContext shardContext = createShardContext();
|
||||
PercolateQueryBuilder percolateQueryBuilder = new PercolateQueryBuilder(queryField, null, supplier);
|
||||
PercolateQueryBuilder percolateQueryBuilder = new PercolateQueryBuilder(queryField, supplier);
|
||||
percolateQueryBuilder.setName(testName);
|
||||
|
||||
QueryBuilder rewrittenQueryBuilder = percolateQueryBuilder.doRewrite(shardContext);
|
||||
|
|
Loading…
Reference in New Issue