[Remove] Type parameter from TermVectors API (#2104)

Remove document type support from the TermVectors API.

Signed-off-by: Nicholas Walter Knize <nknize@apache.org>
This commit is contained in:
Nick Knize 2022-02-15 14:49:08 -06:00 committed by GitHub
parent 62361ceafc
commit c0c7d7aedb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
41 changed files with 237 additions and 597 deletions

View File

@ -46,24 +46,14 @@ import java.util.Objects;
public class TermVectorsResponse { public class TermVectorsResponse {
private final String index; private final String index;
private final String type;
private final String id; private final String id;
private final long docVersion; private final long docVersion;
private final boolean found; private final boolean found;
private final long tookInMillis; private final long tookInMillis;
private final List<TermVector> termVectorList; private final List<TermVector> termVectorList;
public TermVectorsResponse( public TermVectorsResponse(String index, String id, long version, boolean found, long tookInMillis, List<TermVector> termVectorList) {
String index,
String type,
String id,
long version,
boolean found,
long tookInMillis,
List<TermVector> termVectorList
) {
this.index = index; this.index = index;
this.type = type;
this.id = id; this.id = id;
this.docVersion = version; this.docVersion = version;
this.found = found; this.found = found;
@ -75,19 +65,18 @@ public class TermVectorsResponse {
"term_vectors", "term_vectors",
true, true,
args -> { args -> {
// as the response comes from server, we are sure that args[6] will be a list of TermVector // as the response comes from server, we are sure that args[5] will be a list of TermVector
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
List<TermVector> termVectorList = (List<TermVector>) args[6]; List<TermVector> termVectorList = (List<TermVector>) args[5];
if (termVectorList != null) { if (termVectorList != null) {
Collections.sort(termVectorList, Comparator.comparing(TermVector::getFieldName)); Collections.sort(termVectorList, Comparator.comparing(TermVector::getFieldName));
} }
return new TermVectorsResponse( return new TermVectorsResponse(
(String) args[0], (String) args[0],
(String) args[1], (String) args[1],
(String) args[2], (long) args[2],
(long) args[3], (boolean) args[3],
(boolean) args[4], (long) args[4],
(long) args[5],
termVectorList termVectorList
); );
} }
@ -95,7 +84,6 @@ public class TermVectorsResponse {
static { static {
PARSER.declareString(constructorArg(), new ParseField("_index")); PARSER.declareString(constructorArg(), new ParseField("_index"));
PARSER.declareString(constructorArg(), new ParseField("_type"));
PARSER.declareString(optionalConstructorArg(), new ParseField("_id")); PARSER.declareString(optionalConstructorArg(), new ParseField("_id"));
PARSER.declareLong(constructorArg(), new ParseField("_version")); PARSER.declareLong(constructorArg(), new ParseField("_version"));
PARSER.declareBoolean(constructorArg(), new ParseField("found")); PARSER.declareBoolean(constructorArg(), new ParseField("found"));
@ -118,16 +106,6 @@ public class TermVectorsResponse {
return index; return index;
} }
/**
* Returns the type for the response
*
* @deprecated Types are in the process of being removed.
*/
@Deprecated
public String getType() {
return type;
}
/** /**
* Returns the id of the request * Returns the id of the request
* can be NULL if there is no document ID * can be NULL if there is no document ID
@ -171,7 +149,6 @@ public class TermVectorsResponse {
if (!(obj instanceof TermVectorsResponse)) return false; if (!(obj instanceof TermVectorsResponse)) return false;
TermVectorsResponse other = (TermVectorsResponse) obj; TermVectorsResponse other = (TermVectorsResponse) obj;
return index.equals(other.index) return index.equals(other.index)
&& type.equals(other.type)
&& Objects.equals(id, other.id) && Objects.equals(id, other.id)
&& docVersion == other.docVersion && docVersion == other.docVersion
&& found == other.found && found == other.found
@ -181,7 +158,7 @@ public class TermVectorsResponse {
@Override @Override
public int hashCode() { public int hashCode() {
return Objects.hash(index, type, id, docVersion, found, tookInMillis, termVectorList); return Objects.hash(index, id, docVersion, found, tookInMillis, termVectorList);
} }
public static final class TermVector { public static final class TermVector {

View File

@ -59,7 +59,6 @@ public class TermVectorsResponseTests extends OpenSearchTestCase {
static void toXContent(TermVectorsResponse response, XContentBuilder builder) throws IOException { static void toXContent(TermVectorsResponse response, XContentBuilder builder) throws IOException {
builder.startObject(); builder.startObject();
builder.field("_index", response.getIndex()); builder.field("_index", response.getIndex());
builder.field("_type", response.getType());
if (response.getId() != null) { if (response.getId() != null) {
builder.field("_id", response.getId()); builder.field("_id", response.getId());
} }
@ -130,7 +129,6 @@ public class TermVectorsResponseTests extends OpenSearchTestCase {
static TermVectorsResponse createTestInstance() { static TermVectorsResponse createTestInstance() {
String index = randomAlphaOfLength(5); String index = randomAlphaOfLength(5);
String type = randomAlphaOfLength(5);
String id = String.valueOf(randomIntBetween(1, 100)); String id = String.valueOf(randomIntBetween(1, 100));
long version = randomNonNegativeLong(); long version = randomNonNegativeLong();
long tookInMillis = randomNonNegativeLong(); long tookInMillis = randomNonNegativeLong();
@ -154,7 +152,7 @@ public class TermVectorsResponseTests extends OpenSearchTestCase {
); );
} }
} }
TermVectorsResponse tvresponse = new TermVectorsResponse(index, type, id, version, found, tookInMillis, tvList); TermVectorsResponse tvresponse = new TermVectorsResponse(index, id, version, found, tookInMillis, tvList);
return tvresponse; return tvresponse;
} }

View File

@ -1719,9 +1719,8 @@ public class CRUDDocumentationIT extends OpenSearchRestHighLevelClientTestCase {
// tag::term-vectors-response // tag::term-vectors-response
String index = response.getIndex(); // <1> String index = response.getIndex(); // <1>
String type = response.getType(); // <2> String id = response.getId(); // <2>
String id = response.getId(); // <3> boolean found = response.getFound(); // <3>
boolean found = response.getFound(); // <4>
// end::term-vectors-response // end::term-vectors-response
if (response.getTermVectorsList() != null) { if (response.getTermVectorsList() != null) {

View File

@ -41,12 +41,10 @@
like: like:
- -
_index: test_1 _index: test_1
_type: _doc
doc: doc:
foo: bar foo: bar
- -
_index: test_1 _index: test_1
_type: _doc
_id: 2 _id: 2
- -
_id: 3 _id: 3

View File

@ -40,11 +40,9 @@
more_like_this: more_like_this:
like: like:
_index: test_1 _index: test_1
_type: _doc
_id: 1 _id: 1
unlike: unlike:
_index: test_1 _index: test_1
_type: _doc
_id: 3 _id: 3
include: true include: true
min_doc_freq: 0 min_doc_freq: 0

View File

@ -47,7 +47,6 @@ setup:
"docs": "docs":
- -
"_index" : "testidx" "_index" : "testidx"
"_type" : "_doc"
"_id" : "testing_document" "_id" : "testing_document"
"version" : 1 "version" : 1
"_version_type" : "external" "_version_type" : "external"

View File

@ -39,6 +39,5 @@ setup:
realtime: false realtime: false
- match: { _index: "testidx" } - match: { _index: "testidx" }
- match: { _type: "_doc" }
- match: { _id: "1" } - match: { _id: "1" }
- is_false: found - is_false: found

View File

@ -360,7 +360,7 @@ public class IndicesRequestIT extends OpenSearchIntegTestCase {
String termVectorShardAction = TermVectorsAction.NAME + "[s]"; String termVectorShardAction = TermVectorsAction.NAME + "[s]";
interceptTransportActions(termVectorShardAction); interceptTransportActions(termVectorShardAction);
TermVectorsRequest termVectorsRequest = new TermVectorsRequest(randomIndexOrAlias(), "type", "id"); TermVectorsRequest termVectorsRequest = new TermVectorsRequest(randomIndexOrAlias(), "id");
internalCluster().coordOnlyNodeClient().termVectors(termVectorsRequest).actionGet(); internalCluster().coordOnlyNodeClient().termVectors(termVectorsRequest).actionGet();
clearInterceptedActions(); clearInterceptedActions();
@ -376,7 +376,7 @@ public class IndicesRequestIT extends OpenSearchIntegTestCase {
int numDocs = iterations(1, 30); int numDocs = iterations(1, 30);
for (int i = 0; i < numDocs; i++) { for (int i = 0; i < numDocs; i++) {
String indexOrAlias = randomIndexOrAlias(); String indexOrAlias = randomIndexOrAlias();
multiTermVectorsRequest.add(indexOrAlias, "type", Integer.toString(i)); multiTermVectorsRequest.add(indexOrAlias, Integer.toString(i));
indices.add(indexOrAlias); indices.add(indexOrAlias);
} }
internalCluster().coordOnlyNodeClient().multiTermVectors(multiTermVectorsRequest).actionGet(); internalCluster().coordOnlyNodeClient().multiTermVectors(multiTermVectorsRequest).actionGet();

View File

@ -95,7 +95,7 @@ public class GetTermVectorsIT extends AbstractTermVectorsTestCase {
client().prepareIndex("test", "type1", "666").setSource("field", "foo bar").execute().actionGet(); client().prepareIndex("test", "type1", "666").setSource("field", "foo bar").execute().actionGet();
refresh(); refresh();
for (int i = 0; i < 20; i++) { for (int i = 0; i < 20; i++) {
ActionFuture<TermVectorsResponse> termVector = client().termVectors(new TermVectorsRequest(indexOrAlias(), "type1", "" + i)); ActionFuture<TermVectorsResponse> termVector = client().termVectors(new TermVectorsRequest(indexOrAlias(), "" + i));
TermVectorsResponse actionGet = termVector.actionGet(); TermVectorsResponse actionGet = termVector.actionGet();
assertThat(actionGet, notNullValue()); assertThat(actionGet, notNullValue());
assertThat(actionGet.getIndex(), equalTo("test")); assertThat(actionGet.getIndex(), equalTo("test"));
@ -122,7 +122,7 @@ public class GetTermVectorsIT extends AbstractTermVectorsTestCase {
client().prepareIndex("test", "type1", "0").setSource("existingfield", "?").execute().actionGet(); client().prepareIndex("test", "type1", "0").setSource("existingfield", "?").execute().actionGet();
refresh(); refresh();
ActionFuture<TermVectorsResponse> termVector = client().termVectors( ActionFuture<TermVectorsResponse> termVector = client().termVectors(
new TermVectorsRequest(indexOrAlias(), "type1", "0").selectedFields(new String[] { "existingfield" }) new TermVectorsRequest(indexOrAlias(), "0").selectedFields(new String[] { "existingfield" })
); );
// lets see if the null term vectors are caught... // lets see if the null term vectors are caught...
@ -150,7 +150,7 @@ public class GetTermVectorsIT extends AbstractTermVectorsTestCase {
client().prepareIndex("test", "type1", "0").setSource("anotherexistingfield", 1).execute().actionGet(); client().prepareIndex("test", "type1", "0").setSource("anotherexistingfield", 1).execute().actionGet();
refresh(); refresh();
ActionFuture<TermVectorsResponse> termVectors = client().termVectors( ActionFuture<TermVectorsResponse> termVectors = client().termVectors(
new TermVectorsRequest(indexOrAlias(), "type1", "0").selectedFields(randomBoolean() ? new String[] { "existingfield" } : null) new TermVectorsRequest(indexOrAlias(), "0").selectedFields(randomBoolean() ? new String[] { "existingfield" } : null)
.termStatistics(true) .termStatistics(true)
.fieldStatistics(true) .fieldStatistics(true)
); );
@ -191,9 +191,7 @@ public class GetTermVectorsIT extends AbstractTermVectorsTestCase {
indexRandom(true, indexBuilders); indexRandom(true, indexBuilders);
for (int i = 0; i < 4; i++) { for (int i = 0; i < 4; i++) {
TermVectorsResponse resp = client().prepareTermVectors(indexOrAlias(), "type1", String.valueOf(i)) TermVectorsResponse resp = client().prepareTermVectors(indexOrAlias(), String.valueOf(i)).setSelectedFields("field" + i).get();
.setSelectedFields("field" + i)
.get();
assertThat(resp, notNullValue()); assertThat(resp, notNullValue());
assertThat(resp.isExists(), equalTo(true)); assertThat(resp.isExists(), equalTo(true));
assertThat(resp.getIndex(), equalTo("test")); assertThat(resp.getIndex(), equalTo("test"));
@ -201,9 +199,7 @@ public class GetTermVectorsIT extends AbstractTermVectorsTestCase {
} }
for (int i = 4; i < 6; i++) { for (int i = 4; i < 6; i++) {
TermVectorsResponse resp = client().prepareTermVectors(indexOrAlias(), "type1", String.valueOf(i)) TermVectorsResponse resp = client().prepareTermVectors(indexOrAlias(), String.valueOf(i)).setSelectedFields("field" + i).get();
.setSelectedFields("field" + i)
.get();
assertThat(resp.getIndex(), equalTo("test")); assertThat(resp.getIndex(), equalTo("test"));
assertThat("field" + i + " :", resp.getFields().terms("field" + i), notNullValue()); assertThat("field" + i + " :", resp.getFields().terms("field" + i), notNullValue());
} }
@ -245,7 +241,7 @@ public class GetTermVectorsIT extends AbstractTermVectorsTestCase {
refresh(); refresh();
} }
for (int i = 0; i < 10; i++) { for (int i = 0; i < 10; i++) {
TermVectorsRequestBuilder resp = client().prepareTermVectors(indexOrAlias(), "type1", Integer.toString(i)) TermVectorsRequestBuilder resp = client().prepareTermVectors(indexOrAlias(), Integer.toString(i))
.setPayloads(true) .setPayloads(true)
.setOffsets(true) .setOffsets(true)
.setPositions(true) .setPositions(true)
@ -362,7 +358,7 @@ public class GetTermVectorsIT extends AbstractTermVectorsTestCase {
boolean isPositionsRequested = randomBoolean(); boolean isPositionsRequested = randomBoolean();
String infoString = createInfoString(isPositionsRequested, isOffsetRequested, optionString); String infoString = createInfoString(isPositionsRequested, isOffsetRequested, optionString);
for (int i = 0; i < 10; i++) { for (int i = 0; i < 10; i++) {
TermVectorsRequestBuilder resp = client().prepareTermVectors("test", "_doc", Integer.toString(i)) TermVectorsRequestBuilder resp = client().prepareTermVectors("test", Integer.toString(i))
.setOffsets(isOffsetRequested) .setOffsets(isOffsetRequested)
.setPositions(isPositionsRequested) .setPositions(isPositionsRequested)
.setSelectedFields(); .setSelectedFields();
@ -501,7 +497,7 @@ public class GetTermVectorsIT extends AbstractTermVectorsTestCase {
} }
for (int i = 0; i < 10; i++) { for (int i = 0; i < 10; i++) {
TermVectorsResponse response = client().prepareTermVectors("test", "type1", Integer.toString(i)) TermVectorsResponse response = client().prepareTermVectors("test", Integer.toString(i))
.setPayloads(true) .setPayloads(true)
.setOffsets(true) .setOffsets(true)
.setPositions(true) .setPositions(true)
@ -590,7 +586,7 @@ public class GetTermVectorsIT extends AbstractTermVectorsTestCase {
for (int id = 0; id < content.length; id++) { for (int id = 0; id < content.length; id++) {
Fields[] fields = new Fields[2]; Fields[] fields = new Fields[2];
for (int j = 0; j < indexNames.length; j++) { for (int j = 0; j < indexNames.length; j++) {
TermVectorsResponse resp = client().prepareTermVectors(indexNames[j], "type1", String.valueOf(id)) TermVectorsResponse resp = client().prepareTermVectors(indexNames[j], String.valueOf(id))
.setOffsets(true) .setOffsets(true)
.setPositions(true) .setPositions(true)
.setSelectedFields("field1") .setSelectedFields("field1")
@ -661,7 +657,7 @@ public class GetTermVectorsIT extends AbstractTermVectorsTestCase {
client().prepareIndex("test", "type1", "0").setSource(source).get(); client().prepareIndex("test", "type1", "0").setSource(source).get();
refresh(); refresh();
TermVectorsResponse response = client().prepareTermVectors(indexOrAlias(), "type1", "0").setSelectedFields("field*").get(); TermVectorsResponse response = client().prepareTermVectors(indexOrAlias(), "0").setSelectedFields("field*").get();
assertThat("Doc doesn't exists but should", response.isExists(), equalTo(true)); assertThat("Doc doesn't exists but should", response.isExists(), equalTo(true));
assertThat(response.getIndex(), equalTo("test")); assertThat(response.getIndex(), equalTo("test"));
assertThat("All term vectors should have been generated", response.getFields().size(), equalTo(numFields)); assertThat("All term vectors should have been generated", response.getFields().size(), equalTo(numFields));
@ -692,7 +688,7 @@ public class GetTermVectorsIT extends AbstractTermVectorsTestCase {
for (int i = 0; i < content.length; i++) { for (int i = 0; i < content.length; i++) {
// request tvs from existing document // request tvs from existing document
TermVectorsResponse respExisting = client().prepareTermVectors("test", "type1", String.valueOf(i)) TermVectorsResponse respExisting = client().prepareTermVectors("test", String.valueOf(i))
.setOffsets(true) .setOffsets(true)
.setPositions(true) .setPositions(true)
.setFieldStatistics(true) .setFieldStatistics(true)
@ -703,7 +699,6 @@ public class GetTermVectorsIT extends AbstractTermVectorsTestCase {
// request tvs from artificial document // request tvs from artificial document
TermVectorsResponse respArtificial = client().prepareTermVectors() TermVectorsResponse respArtificial = client().prepareTermVectors()
.setIndex("test") .setIndex("test")
.setType("type1")
.setRouting(String.valueOf(i)) // ensure we get the stats from the same shard as existing doc .setRouting(String.valueOf(i)) // ensure we get the stats from the same shard as existing doc
.setDoc(jsonBuilder().startObject().field("field1", content[i]).endObject()) .setDoc(jsonBuilder().startObject().field("field1", content[i]).endObject())
.setOffsets(true) .setOffsets(true)
@ -728,7 +723,6 @@ public class GetTermVectorsIT extends AbstractTermVectorsTestCase {
String text = "the quick brown fox jumps over the lazy dog"; String text = "the quick brown fox jumps over the lazy dog";
TermVectorsResponse resp = client().prepareTermVectors() TermVectorsResponse resp = client().prepareTermVectors()
.setIndex("test") .setIndex("test")
.setType("type1")
.setDoc(jsonBuilder().startObject().field("field1", text).endObject()) .setDoc(jsonBuilder().startObject().field("field1", text).endObject())
.setOffsets(true) .setOffsets(true)
.setPositions(true) .setPositions(true)
@ -798,15 +792,13 @@ public class GetTermVectorsIT extends AbstractTermVectorsTestCase {
} }
// selected fields not specified // selected fields not specified
TermVectorsResponse response = client().prepareTermVectors(indexOrAlias(), "type1", "0") TermVectorsResponse response = client().prepareTermVectors(indexOrAlias(), "0").setPerFieldAnalyzer(perFieldAnalyzer).get();
.setPerFieldAnalyzer(perFieldAnalyzer)
.get();
// should return all fields that have terms vectors, some with overridden analyzer // should return all fields that have terms vectors, some with overridden analyzer
checkAnalyzedFields(response.getFields(), withTermVectors, perFieldAnalyzer); checkAnalyzedFields(response.getFields(), withTermVectors, perFieldAnalyzer);
// selected fields specified including some not in the mapping // selected fields specified including some not in the mapping
response = client().prepareTermVectors(indexOrAlias(), "type1", "0") response = client().prepareTermVectors(indexOrAlias(), "0")
.setSelectedFields(selectedFields.toArray(Strings.EMPTY_ARRAY)) .setSelectedFields(selectedFields.toArray(Strings.EMPTY_ARRAY))
.setPerFieldAnalyzer(perFieldAnalyzer) .setPerFieldAnalyzer(perFieldAnalyzer)
.get(); .get();
@ -848,7 +840,7 @@ public class GetTermVectorsIT extends AbstractTermVectorsTestCase {
assertAcked(prepareCreate("test").addAlias(new Alias("alias")).setSettings(Settings.builder().put("index.refresh_interval", -1))); assertAcked(prepareCreate("test").addAlias(new Alias("alias")).setSettings(Settings.builder().put("index.refresh_interval", -1)));
ensureGreen(); ensureGreen();
TermVectorsResponse response = client().prepareTermVectors("test", "type1", "1").get(); TermVectorsResponse response = client().prepareTermVectors("test", "1").get();
assertThat(response.isExists(), equalTo(false)); assertThat(response.isExists(), equalTo(false));
logger.info("--> index doc 1"); logger.info("--> index doc 1");
@ -857,12 +849,12 @@ public class GetTermVectorsIT extends AbstractTermVectorsTestCase {
// From translog: // From translog:
// version 0 means ignore version, which is the default // version 0 means ignore version, which is the default
response = client().prepareTermVectors(indexOrAlias(), "type1", "1").setVersion(Versions.MATCH_ANY).get(); response = client().prepareTermVectors(indexOrAlias(), "1").setVersion(Versions.MATCH_ANY).get();
assertThat(response.isExists(), equalTo(true)); assertThat(response.isExists(), equalTo(true));
assertThat(response.getId(), equalTo("1")); assertThat(response.getId(), equalTo("1"));
assertThat(response.getVersion(), equalTo(1L)); assertThat(response.getVersion(), equalTo(1L));
response = client().prepareTermVectors(indexOrAlias(), "type1", "1").setVersion(1).get(); response = client().prepareTermVectors(indexOrAlias(), "1").setVersion(1).get();
assertThat(response.isExists(), equalTo(true)); assertThat(response.isExists(), equalTo(true));
assertThat(response.getId(), equalTo("1")); assertThat(response.getId(), equalTo("1"));
assertThat(response.getVersion(), equalTo(1L)); assertThat(response.getVersion(), equalTo(1L));
@ -878,13 +870,13 @@ public class GetTermVectorsIT extends AbstractTermVectorsTestCase {
refresh(); refresh();
// version 0 means ignore version, which is the default // version 0 means ignore version, which is the default
response = client().prepareTermVectors(indexOrAlias(), "type1", "1").setVersion(Versions.MATCH_ANY).setRealtime(false).get(); response = client().prepareTermVectors(indexOrAlias(), "1").setVersion(Versions.MATCH_ANY).setRealtime(false).get();
assertThat(response.isExists(), equalTo(true)); assertThat(response.isExists(), equalTo(true));
assertThat(response.getId(), equalTo("1")); assertThat(response.getId(), equalTo("1"));
assertThat(response.getIndex(), equalTo("test")); assertThat(response.getIndex(), equalTo("test"));
assertThat(response.getVersion(), equalTo(1L)); assertThat(response.getVersion(), equalTo(1L));
response = client().prepareTermVectors(indexOrAlias(), "type1", "1").setVersion(1).setRealtime(false).get(); response = client().prepareTermVectors(indexOrAlias(), "1").setVersion(1).setRealtime(false).get();
assertThat(response.isExists(), equalTo(true)); assertThat(response.isExists(), equalTo(true));
assertThat(response.getId(), equalTo("1")); assertThat(response.getId(), equalTo("1"));
assertThat(response.getIndex(), equalTo("test")); assertThat(response.getIndex(), equalTo("test"));
@ -903,7 +895,7 @@ public class GetTermVectorsIT extends AbstractTermVectorsTestCase {
// From translog: // From translog:
// version 0 means ignore version, which is the default // version 0 means ignore version, which is the default
response = client().prepareTermVectors(indexOrAlias(), "type1", "1").setVersion(Versions.MATCH_ANY).get(); response = client().prepareTermVectors(indexOrAlias(), "1").setVersion(Versions.MATCH_ANY).get();
assertThat(response.isExists(), equalTo(true)); assertThat(response.isExists(), equalTo(true));
assertThat(response.getId(), equalTo("1")); assertThat(response.getId(), equalTo("1"));
assertThat(response.getIndex(), equalTo("test")); assertThat(response.getIndex(), equalTo("test"));
@ -916,7 +908,7 @@ public class GetTermVectorsIT extends AbstractTermVectorsTestCase {
// all good // all good
} }
response = client().prepareTermVectors(indexOrAlias(), "type1", "1").setVersion(2).get(); response = client().prepareTermVectors(indexOrAlias(), "1").setVersion(2).get();
assertThat(response.isExists(), equalTo(true)); assertThat(response.isExists(), equalTo(true));
assertThat(response.getId(), equalTo("1")); assertThat(response.getId(), equalTo("1"));
assertThat(response.getIndex(), equalTo("test")); assertThat(response.getIndex(), equalTo("test"));
@ -926,7 +918,7 @@ public class GetTermVectorsIT extends AbstractTermVectorsTestCase {
refresh(); refresh();
// version 0 means ignore version, which is the default // version 0 means ignore version, which is the default
response = client().prepareTermVectors(indexOrAlias(), "type1", "1").setVersion(Versions.MATCH_ANY).setRealtime(false).get(); response = client().prepareTermVectors(indexOrAlias(), "1").setVersion(Versions.MATCH_ANY).setRealtime(false).get();
assertThat(response.isExists(), equalTo(true)); assertThat(response.isExists(), equalTo(true));
assertThat(response.getId(), equalTo("1")); assertThat(response.getId(), equalTo("1"));
assertThat(response.getIndex(), equalTo("test")); assertThat(response.getIndex(), equalTo("test"));
@ -939,7 +931,7 @@ public class GetTermVectorsIT extends AbstractTermVectorsTestCase {
// all good // all good
} }
response = client().prepareTermVectors(indexOrAlias(), "type1", "1").setVersion(2).setRealtime(false).get(); response = client().prepareTermVectors(indexOrAlias(), "1").setVersion(2).setRealtime(false).get();
assertThat(response.isExists(), equalTo(true)); assertThat(response.isExists(), equalTo(true));
assertThat(response.getId(), equalTo("1")); assertThat(response.getId(), equalTo("1"));
assertThat(response.getIndex(), equalTo("test")); assertThat(response.getIndex(), equalTo("test"));
@ -969,7 +961,7 @@ public class GetTermVectorsIT extends AbstractTermVectorsTestCase {
TermVectorsResponse response; TermVectorsResponse response;
for (int i = 0; i < numTerms; i++) { for (int i = 0; i < numTerms; i++) {
filterSettings.minWordLength = numTerms - i; filterSettings.minWordLength = numTerms - i;
response = client().prepareTermVectors("test", "type1", "1") response = client().prepareTermVectors("test", "1")
.setSelectedFields("tags") .setSelectedFields("tags")
.setFieldStatistics(true) .setFieldStatistics(true)
.setTermStatistics(true) .setTermStatistics(true)
@ -1004,7 +996,7 @@ public class GetTermVectorsIT extends AbstractTermVectorsTestCase {
TermVectorsResponse response; TermVectorsResponse response;
for (int i = 0; i < numTerms; i++) { for (int i = 0; i < numTerms; i++) {
filterSettings.maxNumTerms = i + 1; filterSettings.maxNumTerms = i + 1;
response = client().prepareTermVectors("test", "type1", "1") response = client().prepareTermVectors("test", "1")
.setSelectedFields("tags") .setSelectedFields("tags")
.setFieldStatistics(true) .setFieldStatistics(true)
.setTermStatistics(true) .setTermStatistics(true)
@ -1037,7 +1029,7 @@ public class GetTermVectorsIT extends AbstractTermVectorsTestCase {
TermVectorsResponse response; TermVectorsResponse response;
for (int i = 0; i < numDocs; i++) { for (int i = 0; i < numDocs; i++) {
filterSettings.maxNumTerms = i + 1; filterSettings.maxNumTerms = i + 1;
response = client().prepareTermVectors("test", "type1", (numDocs - 1) + "") response = client().prepareTermVectors("test", (numDocs - 1) + "")
.setSelectedFields("tags") .setSelectedFields("tags")
.setFieldStatistics(true) .setFieldStatistics(true)
.setTermStatistics(true) .setTermStatistics(true)
@ -1068,7 +1060,6 @@ public class GetTermVectorsIT extends AbstractTermVectorsTestCase {
for (Integer shardId : shardIds) { for (Integer shardId : shardIds) {
TermVectorsResponse tvResponse = client().prepareTermVectors() TermVectorsResponse tvResponse = client().prepareTermVectors()
.setIndex("test") .setIndex("test")
.setType("type1")
.setPreference("_shards:" + shardId) .setPreference("_shards:" + shardId)
.setDoc(jsonBuilder().startObject().field("field1", "random permutation").endObject()) .setDoc(jsonBuilder().startObject().field("field1", "random permutation").endObject())
.setFieldStatistics(true) .setFieldStatistics(true)
@ -1132,7 +1123,7 @@ public class GetTermVectorsIT extends AbstractTermVectorsTestCase {
for (int id = 0; id < content.length; id++) { for (int id = 0; id < content.length; id++) {
Fields[] fields = new Fields[2]; Fields[] fields = new Fields[2];
for (int j = 0; j < indexNames.length; j++) { for (int j = 0; j < indexNames.length; j++) {
TermVectorsResponse resp = client().prepareTermVectors(indexNames[j], "type1", String.valueOf(id)) TermVectorsResponse resp = client().prepareTermVectors(indexNames[j], String.valueOf(id))
.setOffsets(true) .setOffsets(true)
.setPositions(true) .setPositions(true)
.setSelectedFields("field1", "field2") .setSelectedFields("field1", "field2")

View File

@ -83,7 +83,7 @@ public class MultiTermVectorsIT extends AbstractTermVectorsTestCase {
} }
public void testMissingIndexThrowsMissingIndex() throws Exception { public void testMissingIndexThrowsMissingIndex() throws Exception {
TermVectorsRequestBuilder requestBuilder = client().prepareTermVectors("testX", "typeX", Integer.toString(1)); TermVectorsRequestBuilder requestBuilder = client().prepareTermVectors("testX", Integer.toString(1));
MultiTermVectorsRequestBuilder mtvBuilder = client().prepareMultiTermVectors(); MultiTermVectorsRequestBuilder mtvBuilder = client().prepareMultiTermVectors();
mtvBuilder.add(requestBuilder.request()); mtvBuilder.add(requestBuilder.request());
MultiTermVectorsResponse response = mtvBuilder.execute().actionGet(); MultiTermVectorsResponse response = mtvBuilder.execute().actionGet();
@ -96,7 +96,7 @@ public class MultiTermVectorsIT extends AbstractTermVectorsTestCase {
assertAcked(prepareCreate("test").addAlias(new Alias("alias")).setSettings(Settings.builder().put("index.refresh_interval", -1))); assertAcked(prepareCreate("test").addAlias(new Alias("alias")).setSettings(Settings.builder().put("index.refresh_interval", -1)));
ensureGreen(); ensureGreen();
MultiTermVectorsResponse response = client().prepareMultiTermVectors().add(indexOrAlias(), "type1", "1").get(); MultiTermVectorsResponse response = client().prepareMultiTermVectors().add(indexOrAlias(), "1").get();
assertThat(response.getResponses().length, equalTo(1)); assertThat(response.getResponses().length, equalTo(1));
assertThat(response.getResponses()[0].getResponse().isExists(), equalTo(false)); assertThat(response.getResponses()[0].getResponse().isExists(), equalTo(false));
@ -106,9 +106,9 @@ public class MultiTermVectorsIT extends AbstractTermVectorsTestCase {
// Version from translog // Version from translog
response = client().prepareMultiTermVectors() response = client().prepareMultiTermVectors()
.add(new TermVectorsRequest(indexOrAlias(), "type1", "1").selectedFields("field").version(Versions.MATCH_ANY)) .add(new TermVectorsRequest(indexOrAlias(), "1").selectedFields("field").version(Versions.MATCH_ANY))
.add(new TermVectorsRequest(indexOrAlias(), "type1", "1").selectedFields("field").version(1)) .add(new TermVectorsRequest(indexOrAlias(), "1").selectedFields("field").version(1))
.add(new TermVectorsRequest(indexOrAlias(), "type1", "1").selectedFields("field").version(2)) .add(new TermVectorsRequest(indexOrAlias(), "1").selectedFields("field").version(2))
.get(); .get();
assertThat(response.getResponses().length, equalTo(3)); assertThat(response.getResponses().length, equalTo(3));
// [0] version doesn't matter, which is the default // [0] version doesn't matter, which is the default
@ -130,9 +130,9 @@ public class MultiTermVectorsIT extends AbstractTermVectorsTestCase {
// Version from Lucene index // Version from Lucene index
refresh(); refresh();
response = client().prepareMultiTermVectors() response = client().prepareMultiTermVectors()
.add(new TermVectorsRequest(indexOrAlias(), "type1", "1").selectedFields("field").version(Versions.MATCH_ANY).realtime(false)) .add(new TermVectorsRequest(indexOrAlias(), "1").selectedFields("field").version(Versions.MATCH_ANY).realtime(false))
.add(new TermVectorsRequest(indexOrAlias(), "type1", "1").selectedFields("field").version(1).realtime(false)) .add(new TermVectorsRequest(indexOrAlias(), "1").selectedFields("field").version(1).realtime(false))
.add(new TermVectorsRequest(indexOrAlias(), "type1", "1").selectedFields("field").version(2).realtime(false)) .add(new TermVectorsRequest(indexOrAlias(), "1").selectedFields("field").version(2).realtime(false))
.get(); .get();
assertThat(response.getResponses().length, equalTo(3)); assertThat(response.getResponses().length, equalTo(3));
// [0] version doesn't matter, which is the default // [0] version doesn't matter, which is the default
@ -155,9 +155,9 @@ public class MultiTermVectorsIT extends AbstractTermVectorsTestCase {
// Version from translog // Version from translog
response = client().prepareMultiTermVectors() response = client().prepareMultiTermVectors()
.add(new TermVectorsRequest(indexOrAlias(), "type1", "2").selectedFields("field").version(Versions.MATCH_ANY)) .add(new TermVectorsRequest(indexOrAlias(), "2").selectedFields("field").version(Versions.MATCH_ANY))
.add(new TermVectorsRequest(indexOrAlias(), "type1", "2").selectedFields("field").version(1)) .add(new TermVectorsRequest(indexOrAlias(), "2").selectedFields("field").version(1))
.add(new TermVectorsRequest(indexOrAlias(), "type1", "2").selectedFields("field").version(2)) .add(new TermVectorsRequest(indexOrAlias(), "2").selectedFields("field").version(2))
.get(); .get();
assertThat(response.getResponses().length, equalTo(3)); assertThat(response.getResponses().length, equalTo(3));
// [0] version doesn't matter, which is the default // [0] version doesn't matter, which is the default
@ -180,9 +180,9 @@ public class MultiTermVectorsIT extends AbstractTermVectorsTestCase {
// Version from Lucene index // Version from Lucene index
refresh(); refresh();
response = client().prepareMultiTermVectors() response = client().prepareMultiTermVectors()
.add(new TermVectorsRequest(indexOrAlias(), "type1", "2").selectedFields("field").version(Versions.MATCH_ANY)) .add(new TermVectorsRequest(indexOrAlias(), "2").selectedFields("field").version(Versions.MATCH_ANY))
.add(new TermVectorsRequest(indexOrAlias(), "type1", "2").selectedFields("field").version(1)) .add(new TermVectorsRequest(indexOrAlias(), "2").selectedFields("field").version(1))
.add(new TermVectorsRequest(indexOrAlias(), "type1", "2").selectedFields("field").version(2)) .add(new TermVectorsRequest(indexOrAlias(), "2").selectedFields("field").version(2))
.get(); .get();
assertThat(response.getResponses().length, equalTo(3)); assertThat(response.getResponses().length, equalTo(3));
// [0] version doesn't matter, which is the default // [0] version doesn't matter, which is the default

View File

@ -618,15 +618,15 @@ public class SimpleRoutingIT extends OpenSearchIntegTestCase {
} }
logger.info("--> verifying term vector with id [1], with routing [0], should succeed"); logger.info("--> verifying term vector with id [1], with routing [0], should succeed");
TermVectorsResponse termVectorsResponse = client().prepareTermVectors(indexOrAlias(), "type1", "1").setRouting(routingValue).get(); TermVectorsResponse termVectorsResponse = client().prepareTermVectors(indexOrAlias(), "1").setRouting(routingValue).get();
assertThat(termVectorsResponse.isExists(), equalTo(true)); assertThat(termVectorsResponse.isExists(), equalTo(true));
assertThat(termVectorsResponse.getId(), equalTo("1")); assertThat(termVectorsResponse.getId(), equalTo("1"));
try { try {
client().prepareTermVectors(indexOrAlias(), "type1", "1").get(); client().prepareTermVectors(indexOrAlias(), "1").get();
fail(); fail();
} catch (RoutingMissingException e) { } catch (RoutingMissingException e) {
assertThat(e.getMessage(), equalTo("routing is required for [test]/[type1]/[1]")); assertThat(e.getMessage(), equalTo("routing is required for [test]/[_doc]/[1]"));
} }
UpdateResponse updateResponse = client().prepareUpdate(indexOrAlias(), "type1", "1") UpdateResponse updateResponse = client().prepareUpdate(indexOrAlias(), "type1", "1")
@ -668,8 +668,8 @@ public class SimpleRoutingIT extends OpenSearchIntegTestCase {
assertThat(multiGetResponse.getResponses()[1].getFailure().getMessage(), equalTo("routing is required for [test]/[type1]/[2]")); assertThat(multiGetResponse.getResponses()[1].getFailure().getMessage(), equalTo("routing is required for [test]/[type1]/[2]"));
MultiTermVectorsResponse multiTermVectorsResponse = client().prepareMultiTermVectors() MultiTermVectorsResponse multiTermVectorsResponse = client().prepareMultiTermVectors()
.add(new TermVectorsRequest(indexOrAlias(), "type1", "1").routing(routingValue)) .add(new TermVectorsRequest(indexOrAlias(), "1").routing(routingValue))
.add(new TermVectorsRequest(indexOrAlias(), "type1", "2").routing(routingValue)) .add(new TermVectorsRequest(indexOrAlias(), "2").routing(routingValue))
.get(); .get();
assertThat(multiTermVectorsResponse.getResponses().length, equalTo(2)); assertThat(multiTermVectorsResponse.getResponses().length, equalTo(2));
assertThat(multiTermVectorsResponse.getResponses()[0].getId(), equalTo("1")); assertThat(multiTermVectorsResponse.getResponses()[0].getId(), equalTo("1"));
@ -682,15 +682,15 @@ public class SimpleRoutingIT extends OpenSearchIntegTestCase {
assertThat(multiTermVectorsResponse.getResponses()[1].getResponse().isExists(), equalTo(true)); assertThat(multiTermVectorsResponse.getResponses()[1].getResponse().isExists(), equalTo(true));
multiTermVectorsResponse = client().prepareMultiTermVectors() multiTermVectorsResponse = client().prepareMultiTermVectors()
.add(new TermVectorsRequest(indexOrAlias(), "type1", "1")) .add(new TermVectorsRequest(indexOrAlias(), "1"))
.add(new TermVectorsRequest(indexOrAlias(), "type1", "2")) .add(new TermVectorsRequest(indexOrAlias(), "2"))
.get(); .get();
assertThat(multiTermVectorsResponse.getResponses().length, equalTo(2)); assertThat(multiTermVectorsResponse.getResponses().length, equalTo(2));
assertThat(multiTermVectorsResponse.getResponses()[0].getId(), equalTo("1")); assertThat(multiTermVectorsResponse.getResponses()[0].getId(), equalTo("1"));
assertThat(multiTermVectorsResponse.getResponses()[0].isFailed(), equalTo(true)); assertThat(multiTermVectorsResponse.getResponses()[0].isFailed(), equalTo(true));
assertThat( assertThat(
multiTermVectorsResponse.getResponses()[0].getFailure().getCause().getMessage(), multiTermVectorsResponse.getResponses()[0].getFailure().getCause().getMessage(),
equalTo("routing is required for [test]/[type1]/[1]") equalTo("routing is required for [test]/[_doc]/[1]")
); );
assertThat(multiTermVectorsResponse.getResponses()[0].getResponse(), nullValue()); assertThat(multiTermVectorsResponse.getResponses()[0].getResponse(), nullValue());
assertThat(multiTermVectorsResponse.getResponses()[1].getId(), equalTo("2")); assertThat(multiTermVectorsResponse.getResponses()[1].getId(), equalTo("2"));
@ -698,7 +698,7 @@ public class SimpleRoutingIT extends OpenSearchIntegTestCase {
assertThat(multiTermVectorsResponse.getResponses()[1].getResponse(), nullValue()); assertThat(multiTermVectorsResponse.getResponses()[1].getResponse(), nullValue());
assertThat( assertThat(
multiTermVectorsResponse.getResponses()[1].getFailure().getCause().getMessage(), multiTermVectorsResponse.getResponses()[1].getFailure().getCause().getMessage(),
equalTo("routing is required for [test]/[type1]/[2]") equalTo("routing is required for [test]/[_doc]/[2]")
); );
} }

View File

@ -148,7 +148,7 @@ public class MoreLikeThisIT extends OpenSearchIntegTestCase {
logger.info("Running moreLikeThis"); logger.info("Running moreLikeThis");
SearchResponse response = client().prepareSearch() SearchResponse response = client().prepareSearch()
.setQuery(new MoreLikeThisQueryBuilder(null, new Item[] { new Item("test", "type1", "1") }).minTermFreq(1).minDocFreq(1)) .setQuery(new MoreLikeThisQueryBuilder(null, new Item[] { new Item("test", "1") }).minTermFreq(1).minDocFreq(1))
.get(); .get();
assertHitCount(response, 1L); assertHitCount(response, 1L);
} }
@ -319,7 +319,7 @@ public class MoreLikeThisIT extends OpenSearchIntegTestCase {
refresh(indexName); refresh(indexName);
SearchResponse response = client().prepareSearch() SearchResponse response = client().prepareSearch()
.setQuery(new MoreLikeThisQueryBuilder(null, new Item[] { new Item(aliasName, typeName, "1") }).minTermFreq(1).minDocFreq(1)) .setQuery(new MoreLikeThisQueryBuilder(null, new Item[] { new Item(aliasName, "1") }).minTermFreq(1).minDocFreq(1))
.get(); .get();
assertHitCount(response, 2L); assertHitCount(response, 2L);
assertThat(response.getHits().getAt(0).getId(), equalTo("3")); assertThat(response.getHits().getAt(0).getId(), equalTo("3"));
@ -337,11 +337,11 @@ public class MoreLikeThisIT extends OpenSearchIntegTestCase {
assertThat(ensureGreen(), equalTo(ClusterHealthStatus.GREEN)); assertThat(ensureGreen(), equalTo(ClusterHealthStatus.GREEN));
SearchResponse response = client().prepareSearch() SearchResponse response = client().prepareSearch()
.setQuery(new MoreLikeThisQueryBuilder(null, new Item[] { new Item("foo", "bar", "1") })) .setQuery(new MoreLikeThisQueryBuilder(null, new Item[] { new Item("foo", "1") }))
.get(); .get();
assertNoFailures(response); assertNoFailures(response);
assertThat(response, notNullValue()); assertThat(response, notNullValue());
response = client().prepareSearch().setQuery(new MoreLikeThisQueryBuilder(null, new Item[] { new Item("foo", "bar", "1") })).get(); response = client().prepareSearch().setQuery(new MoreLikeThisQueryBuilder(null, new Item[] { new Item("foo", "1") })).get();
assertNoFailures(response); assertNoFailures(response);
assertThat(response, notNullValue()); assertThat(response, notNullValue());
} }
@ -361,7 +361,7 @@ public class MoreLikeThisIT extends OpenSearchIntegTestCase {
client().admin().indices().prepareRefresh("foo").get(); client().admin().indices().prepareRefresh("foo").get();
SearchResponse response = client().prepareSearch() SearchResponse response = client().prepareSearch()
.setQuery(new MoreLikeThisQueryBuilder(null, new Item[] { new Item("foo", "bar", "1").routing("2") })) .setQuery(new MoreLikeThisQueryBuilder(null, new Item[] { new Item("foo", "1").routing("2") }))
.get(); .get();
assertNoFailures(response); assertNoFailures(response);
assertThat(response, notNullValue()); assertThat(response, notNullValue());
@ -387,7 +387,7 @@ public class MoreLikeThisIT extends OpenSearchIntegTestCase {
.get(); .get();
client().admin().indices().prepareRefresh("foo").get(); client().admin().indices().prepareRefresh("foo").get();
SearchResponse response = client().prepareSearch() SearchResponse response = client().prepareSearch()
.setQuery(new MoreLikeThisQueryBuilder(null, new Item[] { new Item("foo", "bar", "1").routing("4000") })) .setQuery(new MoreLikeThisQueryBuilder(null, new Item[] { new Item("foo", "1").routing("4000") }))
.get(); .get();
assertNoFailures(response); assertNoFailures(response);
assertThat(response, notNullValue()); assertThat(response, notNullValue());
@ -530,7 +530,7 @@ public class MoreLikeThisIT extends OpenSearchIntegTestCase {
index("test", "_doc", "2", "text", "lucene release"); index("test", "_doc", "2", "text", "lucene release");
refresh(); refresh();
Item item = new Item("test", "_doc", "1"); Item item = new Item("test", "1");
QueryBuilder query = QueryBuilders.moreLikeThisQuery(new String[] { "alias" }, null, new Item[] { item }) QueryBuilder query = QueryBuilders.moreLikeThisQuery(new String[] { "alias" }, null, new Item[] { item })
.minTermFreq(1) .minTermFreq(1)
.minDocFreq(1); .minDocFreq(1);
@ -588,7 +588,7 @@ public class MoreLikeThisIT extends OpenSearchIntegTestCase {
response = client().prepareSearch() response = client().prepareSearch()
.setQuery( .setQuery(
new MoreLikeThisQueryBuilder(null, new Item[] { new Item("test", "type1", "2") }).minTermFreq(1) new MoreLikeThisQueryBuilder(null, new Item[] { new Item("test", "2") }).minTermFreq(1)
.minDocFreq(1) .minDocFreq(1)
.include(true) .include(true)
.minimumShouldMatch("0%") .minimumShouldMatch("0%")
@ -635,7 +635,7 @@ public class MoreLikeThisIT extends OpenSearchIntegTestCase {
indexRandom(true, builders); indexRandom(true, builders);
logger.info("Running MoreLikeThis"); logger.info("Running MoreLikeThis");
Item[] items = new Item[] { new Item(null, null, "1") }; Item[] items = new Item[] { new Item(null, "1") };
MoreLikeThisQueryBuilder queryBuilder = QueryBuilders.moreLikeThisQuery(new String[] { "text" }, null, items) MoreLikeThisQueryBuilder queryBuilder = QueryBuilders.moreLikeThisQuery(new String[] { "text" }, null, items)
.include(true) .include(true)
.minTermFreq(1) .minTermFreq(1)
@ -667,7 +667,7 @@ public class MoreLikeThisIT extends OpenSearchIntegTestCase {
for (int i = 0; i < maxIters; i++) { for (int i = 0; i < maxIters; i++) {
int max_query_terms = randomIntBetween(1, values.length); int max_query_terms = randomIntBetween(1, values.length);
logger.info("Running More Like This with max_query_terms = {}", max_query_terms); logger.info("Running More Like This with max_query_terms = {}", max_query_terms);
MoreLikeThisQueryBuilder mltQuery = moreLikeThisQuery(new String[] { "text" }, null, new Item[] { new Item(null, null, "0") }) MoreLikeThisQueryBuilder mltQuery = moreLikeThisQuery(new String[] { "text" }, null, new Item[] { new Item(null, "0") })
.minTermFreq(1) .minTermFreq(1)
.minDocFreq(1) .minDocFreq(1)
.maxQueryTerms(max_query_terms) .maxQueryTerms(max_query_terms)
@ -731,7 +731,7 @@ public class MoreLikeThisIT extends OpenSearchIntegTestCase {
logger.info("Checking the document matches ..."); logger.info("Checking the document matches ...");
// routing to ensure we hit the shard with the doc // routing to ensure we hit the shard with the doc
MoreLikeThisQueryBuilder mltQuery = moreLikeThisQuery(new Item[] { new Item("test", "type1", doc).routing("0") }).minTermFreq(0) MoreLikeThisQueryBuilder mltQuery = moreLikeThisQuery(new Item[] { new Item("test", doc).routing("0") }).minTermFreq(0)
.minDocFreq(0) .minDocFreq(0)
.maxQueryTerms(100) .maxQueryTerms(100)
.minimumShouldMatch("100%"); // strict all terms must match! .minimumShouldMatch("100%"); // strict all terms must match!
@ -740,6 +740,7 @@ public class MoreLikeThisIT extends OpenSearchIntegTestCase {
assertHitCount(response, 1); assertHitCount(response, 1);
} }
@AwaitsFix(bugUrl = "https://github.com/opensearch-project/OpenSearch/issues/2107")
public void testMoreLikeThisMalformedArtificialDocs() throws Exception { public void testMoreLikeThisMalformedArtificialDocs() throws Exception {
logger.info("Creating the index ..."); logger.info("Creating the index ...");
assertAcked(prepareCreate("test").addMapping("type1", "text", "type=text,analyzer=whitespace", "date", "type=date")); assertAcked(prepareCreate("test").addMapping("type1", "text", "type=text,analyzer=whitespace", "date", "type=date"));
@ -757,19 +758,17 @@ public class MoreLikeThisIT extends OpenSearchIntegTestCase {
.field("text", "Hello World!") .field("text", "Hello World!")
.field("date", "this is not a date!") .field("date", "this is not a date!")
.endObject(); .endObject();
MoreLikeThisQueryBuilder mltQuery = moreLikeThisQuery(new Item[] { new Item("test", "type1", malformedFieldDoc) }).minTermFreq(0) MoreLikeThisQueryBuilder mltQuery = moreLikeThisQuery(new Item[] { new Item("test", malformedFieldDoc) }).minTermFreq(0)
.minDocFreq(0) .minDocFreq(0)
.minimumShouldMatch("0%"); .minimumShouldMatch("0%");
SearchResponse response = client().prepareSearch("test").setTypes("type1").setQuery(mltQuery).get(); SearchResponse response = client().prepareSearch("test").setQuery(mltQuery).get();
assertSearchResponse(response); assertSearchResponse(response);
assertHitCount(response, 0); assertHitCount(response, 0);
logger.info("Checking with an empty document ..."); logger.info("Checking with an empty document ...");
XContentBuilder emptyDoc = jsonBuilder().startObject().endObject(); XContentBuilder emptyDoc = jsonBuilder().startObject().endObject();
mltQuery = moreLikeThisQuery(null, new Item[] { new Item("test", "type1", emptyDoc) }).minTermFreq(0) mltQuery = moreLikeThisQuery(null, new Item[] { new Item("test", emptyDoc) }).minTermFreq(0).minDocFreq(0).minimumShouldMatch("0%");
.minDocFreq(0) response = client().prepareSearch("test").setQuery(mltQuery).get();
.minimumShouldMatch("0%");
response = client().prepareSearch("test").setTypes("type1").setQuery(mltQuery).get();
assertSearchResponse(response); assertSearchResponse(response);
assertHitCount(response, 0); assertHitCount(response, 0);
@ -778,10 +777,10 @@ public class MoreLikeThisIT extends OpenSearchIntegTestCase {
.field("text", "Hello World!") .field("text", "Hello World!")
.field("date", "1000-01-01") // should be properly parsed but ignored ... .field("date", "1000-01-01") // should be properly parsed but ignored ...
.endObject(); .endObject();
mltQuery = moreLikeThisQuery(null, new Item[] { new Item("test", "type1", normalDoc) }).minTermFreq(0) mltQuery = moreLikeThisQuery(null, new Item[] { new Item("test", normalDoc) }).minTermFreq(0)
.minDocFreq(0) .minDocFreq(0)
.minimumShouldMatch("100%"); // strict all terms must match but date is ignored .minimumShouldMatch("100%"); // strict all terms must match but date is ignored
response = client().prepareSearch("test").setTypes("type1").setQuery(mltQuery).get(); response = client().prepareSearch("test").setQuery(mltQuery).get();
assertSearchResponse(response); assertSearchResponse(response);
assertHitCount(response, 1); assertHitCount(response, 1);
} }
@ -806,7 +805,7 @@ public class MoreLikeThisIT extends OpenSearchIntegTestCase {
indexRandom(true, builders); indexRandom(true, builders);
logger.info("First check the document matches all indexed docs."); logger.info("First check the document matches all indexed docs.");
MoreLikeThisQueryBuilder mltQuery = moreLikeThisQuery(new Item[] { new Item("test", "type1", doc) }).minTermFreq(0) MoreLikeThisQueryBuilder mltQuery = moreLikeThisQuery(new Item[] { new Item("test", doc) }).minTermFreq(0)
.minDocFreq(0) .minDocFreq(0)
.maxQueryTerms(100) .maxQueryTerms(100)
.minimumShouldMatch("0%"); .minimumShouldMatch("0%");
@ -817,8 +816,8 @@ public class MoreLikeThisIT extends OpenSearchIntegTestCase {
logger.info("Now check like this doc, but ignore one doc in the index, then two and so on..."); logger.info("Now check like this doc, but ignore one doc in the index, then two and so on...");
List<Item> docs = new ArrayList<>(numFields); List<Item> docs = new ArrayList<>(numFields);
for (int i = 0; i < numFields; i++) { for (int i = 0; i < numFields; i++) {
docs.add(new Item("test", "type1", i + "")); docs.add(new Item("test", i + ""));
mltQuery = moreLikeThisQuery(null, new Item[] { new Item("test", "type1", doc) }).unlike(docs.toArray(new Item[docs.size()])) mltQuery = moreLikeThisQuery(null, new Item[] { new Item("test", doc) }).unlike(docs.toArray(new Item[docs.size()]))
.minTermFreq(0) .minTermFreq(0)
.minDocFreq(0) .minDocFreq(0)
.maxQueryTerms(100) .maxQueryTerms(100)
@ -868,7 +867,7 @@ public class MoreLikeThisIT extends OpenSearchIntegTestCase {
client().prepareIndex("index", "type", "3").setRouting("4").setSource("text", "this is yet another document").get(); client().prepareIndex("index", "type", "3").setRouting("4").setSource("text", "this is yet another document").get();
refresh("index"); refresh("index");
Item item = new Item("index", "type", "2").routing("1"); Item item = new Item("index", "2").routing("1");
MoreLikeThisQueryBuilder moreLikeThisQueryBuilder = new MoreLikeThisQueryBuilder( MoreLikeThisQueryBuilder moreLikeThisQueryBuilder = new MoreLikeThisQueryBuilder(
new String[] { "text" }, new String[] { "text" },
null, null,
@ -926,10 +925,7 @@ public class MoreLikeThisIT extends OpenSearchIntegTestCase {
.setQuery( .setQuery(
new MoreLikeThisQueryBuilder( new MoreLikeThisQueryBuilder(
null, null,
new Item[] { new Item[] { new Item("test", "1").routing("1"), new Item("test", "2"), new Item("test", "3") }
new Item("test", "1").routing("1"),
new Item("test", "type1", "2"),
new Item("test", "type1", "3") }
).minTermFreq(1).minDocFreq(1) ).minTermFreq(1).minDocFreq(1)
) )
.get() .get()
@ -937,7 +933,7 @@ public class MoreLikeThisIT extends OpenSearchIntegTestCase {
Throwable cause = exception.getCause(); Throwable cause = exception.getCause();
assertThat(cause, instanceOf(RoutingMissingException.class)); assertThat(cause, instanceOf(RoutingMissingException.class));
assertThat(cause.getMessage(), equalTo("routing is required for [test]/[type1]/[2]")); assertThat(cause.getMessage(), equalTo("routing is required for [test]/[_doc]/[2]"));
} }
} }
} }

View File

@ -357,7 +357,7 @@ public class SimpleValidateQueryIT extends OpenSearchIntegTestCase {
assertExplanation(QueryBuilders.fuzzyQuery("field", "jump"), containsString("(field:jumps)^0.75"), true); assertExplanation(QueryBuilders.fuzzyQuery("field", "jump"), containsString("(field:jumps)^0.75"), true);
// more like this queries // more like this queries
Item[] items = new Item[] { new Item(null, null, "1") }; Item[] items = new Item[] { new Item(null, "1") };
assertExplanation( assertExplanation(
QueryBuilders.moreLikeThisQuery(new String[] { "field" }, null, items) QueryBuilders.moreLikeThisQuery(new String[] { "field" }, null, items)
.include(true) .include(true)

View File

@ -35,6 +35,7 @@ package org.opensearch.action;
import org.opensearch.OpenSearchException; import org.opensearch.OpenSearchException;
import org.opensearch.common.io.stream.StreamInput; import org.opensearch.common.io.stream.StreamInput;
import org.opensearch.common.io.stream.StreamOutput; import org.opensearch.common.io.stream.StreamOutput;
import org.opensearch.index.mapper.MapperService;
import org.opensearch.rest.RestStatus; import org.opensearch.rest.RestStatus;
import java.io.IOException; import java.io.IOException;
@ -46,6 +47,10 @@ public class RoutingMissingException extends OpenSearchException {
private final String id; private final String id;
public RoutingMissingException(String index, String id) {
this(index, MapperService.SINGLE_MAPPING_NAME, id);
}
public RoutingMissingException(String index, String type, String id) { public RoutingMissingException(String index, String type, String id) {
super("routing is required for [" + index + "]/[" + type + "]/[" + id + "]"); super("routing is required for [" + index + "]/[" + type + "]/[" + id + "]");
Objects.requireNonNull(index, "index must not be null"); Objects.requireNonNull(index, "index must not be null");

View File

@ -72,16 +72,6 @@ public class MultiTermVectorsItemResponse implements Writeable {
return response.getIndex(); return response.getIndex();
} }
/**
* The type of the document.
*/
public String getType() {
if (failure != null) {
return failure.getType();
}
return response.getType();
}
/** /**
* The id of the document. * The id of the document.
*/ */

View File

@ -42,7 +42,6 @@ import org.opensearch.common.Nullable;
import org.opensearch.common.io.stream.StreamInput; import org.opensearch.common.io.stream.StreamInput;
import org.opensearch.common.io.stream.StreamOutput; import org.opensearch.common.io.stream.StreamOutput;
import org.opensearch.common.xcontent.XContentParser; import org.opensearch.common.xcontent.XContentParser;
import org.opensearch.index.mapper.MapperService;
import java.io.IOException; import java.io.IOException;
import java.util.ArrayList; import java.util.ArrayList;
@ -80,8 +79,8 @@ public class MultiTermVectorsRequest extends ActionRequest
return this; return this;
} }
public MultiTermVectorsRequest add(String index, @Nullable String type, String id) { public MultiTermVectorsRequest add(String index, String id) {
requests.add(new TermVectorsRequest(index, type, id)); requests.add(new TermVectorsRequest(index, id));
return this; return this;
} }
@ -132,9 +131,6 @@ public class MultiTermVectorsRequest extends ActionRequest
throw new IllegalArgumentException("docs array element should include an object"); throw new IllegalArgumentException("docs array element should include an object");
} }
TermVectorsRequest termVectorsRequest = new TermVectorsRequest(template); TermVectorsRequest termVectorsRequest = new TermVectorsRequest(template);
if (termVectorsRequest.type() == null) {
termVectorsRequest.type(MapperService.SINGLE_MAPPING_NAME);
}
TermVectorsRequest.parseRequest(termVectorsRequest, parser); TermVectorsRequest.parseRequest(termVectorsRequest, parser);
add(termVectorsRequest); add(termVectorsRequest);
} }

View File

@ -34,7 +34,6 @@ package org.opensearch.action.termvectors;
import org.opensearch.action.ActionRequestBuilder; import org.opensearch.action.ActionRequestBuilder;
import org.opensearch.client.OpenSearchClient; import org.opensearch.client.OpenSearchClient;
import org.opensearch.common.Nullable;
public class MultiTermVectorsRequestBuilder extends ActionRequestBuilder<MultiTermVectorsRequest, MultiTermVectorsResponse> { public class MultiTermVectorsRequestBuilder extends ActionRequestBuilder<MultiTermVectorsRequest, MultiTermVectorsResponse> {
@ -42,16 +41,16 @@ public class MultiTermVectorsRequestBuilder extends ActionRequestBuilder<MultiTe
super(client, action, new MultiTermVectorsRequest()); super(client, action, new MultiTermVectorsRequest());
} }
public MultiTermVectorsRequestBuilder add(String index, @Nullable String type, Iterable<String> ids) { public MultiTermVectorsRequestBuilder add(String index, Iterable<String> ids) {
for (String id : ids) { for (String id : ids) {
request.add(index, type, id); request.add(index, id);
} }
return this; return this;
} }
public MultiTermVectorsRequestBuilder add(String index, @Nullable String type, String... ids) { public MultiTermVectorsRequestBuilder add(String index, String... ids) {
for (String id : ids) { for (String id : ids) {
request.add(index, type, id); request.add(index, id);
} }
return this; return this;
} }

View File

@ -33,6 +33,7 @@
package org.opensearch.action.termvectors; package org.opensearch.action.termvectors;
import org.opensearch.OpenSearchException; import org.opensearch.OpenSearchException;
import org.opensearch.Version;
import org.opensearch.action.ActionResponse; import org.opensearch.action.ActionResponse;
import org.opensearch.common.io.stream.StreamInput; import org.opensearch.common.io.stream.StreamInput;
import org.opensearch.common.io.stream.StreamOutput; import org.opensearch.common.io.stream.StreamOutput;
@ -51,20 +52,21 @@ public class MultiTermVectorsResponse extends ActionResponse implements Iterable
*/ */
public static class Failure implements Writeable { public static class Failure implements Writeable {
private final String index; private final String index;
private final String type;
private final String id; private final String id;
private final Exception cause; private final Exception cause;
public Failure(String index, String type, String id, Exception cause) { public Failure(String index, String id, Exception cause) {
this.index = index; this.index = index;
this.type = type;
this.id = id; this.id = id;
this.cause = cause; this.cause = cause;
} }
public Failure(StreamInput in) throws IOException { public Failure(StreamInput in) throws IOException {
index = in.readString(); index = in.readString();
type = in.readOptionalString(); if (in.getVersion().before(Version.V_2_0_0)) {
// ignore removed type from pre-2.0.0 versions
in.readOptionalString();
}
id = in.readString(); id = in.readString();
cause = in.readException(); cause = in.readException();
} }
@ -76,16 +78,6 @@ public class MultiTermVectorsResponse extends ActionResponse implements Iterable
return this.index; return this.index;
} }
/**
* The type of the action.
*
* @deprecated Types are in the process of being removed.
*/
@Deprecated
public String getType() {
return type;
}
/** /**
* The id of the action. * The id of the action.
*/ */
@ -103,7 +95,10 @@ public class MultiTermVectorsResponse extends ActionResponse implements Iterable
@Override @Override
public void writeTo(StreamOutput out) throws IOException { public void writeTo(StreamOutput out) throws IOException {
out.writeString(index); out.writeString(index);
out.writeOptionalString(type); if (out.getVersion().before(Version.V_2_0_0)) {
// types no longer supported
out.writeOptionalString(null);
}
out.writeString(id); out.writeString(id);
out.writeException(cause); out.writeException(cause);
} }
@ -138,7 +133,6 @@ public class MultiTermVectorsResponse extends ActionResponse implements Iterable
builder.startObject(); builder.startObject();
Failure failure = response.getFailure(); Failure failure = response.getFailure();
builder.field(Fields._INDEX, failure.getIndex()); builder.field(Fields._INDEX, failure.getIndex());
builder.field(Fields._TYPE, failure.getType());
builder.field(Fields._ID, failure.getId()); builder.field(Fields._ID, failure.getId());
OpenSearchException.generateFailureXContent(builder, params, failure.getCause(), true); OpenSearchException.generateFailureXContent(builder, params, failure.getCause(), true);
builder.endObject(); builder.endObject();

View File

@ -34,6 +34,7 @@ package org.opensearch.action.termvectors;
import org.opensearch.LegacyESVersion; import org.opensearch.LegacyESVersion;
import org.opensearch.OpenSearchParseException; import org.opensearch.OpenSearchParseException;
import org.opensearch.Version;
import org.opensearch.action.ActionRequestValidationException; import org.opensearch.action.ActionRequestValidationException;
import org.opensearch.action.RealtimeRequest; import org.opensearch.action.RealtimeRequest;
import org.opensearch.action.ValidateActions; import org.opensearch.action.ValidateActions;
@ -45,7 +46,6 @@ import org.opensearch.common.bytes.BytesArray;
import org.opensearch.common.bytes.BytesReference; import org.opensearch.common.bytes.BytesReference;
import org.opensearch.common.io.stream.StreamInput; import org.opensearch.common.io.stream.StreamInput;
import org.opensearch.common.io.stream.StreamOutput; import org.opensearch.common.io.stream.StreamOutput;
import org.opensearch.common.logging.DeprecationLogger;
import org.opensearch.common.lucene.uid.Versions; import org.opensearch.common.lucene.uid.Versions;
import org.opensearch.common.util.set.Sets; import org.opensearch.common.util.set.Sets;
import org.opensearch.common.xcontent.XContentBuilder; import org.opensearch.common.xcontent.XContentBuilder;
@ -53,7 +53,7 @@ import org.opensearch.common.xcontent.XContentHelper;
import org.opensearch.common.xcontent.XContentParser; import org.opensearch.common.xcontent.XContentParser;
import org.opensearch.common.xcontent.XContentType; import org.opensearch.common.xcontent.XContentType;
import org.opensearch.index.VersionType; import org.opensearch.index.VersionType;
import org.opensearch.rest.action.document.RestTermVectorsAction; import org.opensearch.index.mapper.MapperService;
import java.io.IOException; import java.io.IOException;
import java.util.ArrayList; import java.util.ArrayList;
@ -71,14 +71,11 @@ import static org.opensearch.common.xcontent.XContentFactory.jsonBuilder;
* Request returning the term vector (doc frequency, positions, offsets) for a * Request returning the term vector (doc frequency, positions, offsets) for a
* document. * document.
* <p> * <p>
* Note, the {@link #index()}, {@link #type(String)} and {@link #id(String)} are * Note, the {@link #index()}, and {@link #id(String)} are
* required. * required.
*/ */
public class TermVectorsRequest extends SingleShardRequest<TermVectorsRequest> implements RealtimeRequest { public class TermVectorsRequest extends SingleShardRequest<TermVectorsRequest> implements RealtimeRequest {
private static final DeprecationLogger deprecationLogger = DeprecationLogger.getLogger(TermVectorsRequest.class);
private static final ParseField INDEX = new ParseField("_index"); private static final ParseField INDEX = new ParseField("_index");
private static final ParseField TYPE = new ParseField("_type");
private static final ParseField ID = new ParseField("_id"); private static final ParseField ID = new ParseField("_id");
private static final ParseField ROUTING = new ParseField("routing"); private static final ParseField ROUTING = new ParseField("routing");
private static final ParseField VERSION = new ParseField("version"); private static final ParseField VERSION = new ParseField("version");
@ -91,8 +88,6 @@ public class TermVectorsRequest extends SingleShardRequest<TermVectorsRequest> i
private static final ParseField FILTER = new ParseField("filter"); private static final ParseField FILTER = new ParseField("filter");
private static final ParseField DOC = new ParseField("doc"); private static final ParseField DOC = new ParseField("doc");
private String type;
private String id; private String id;
private BytesReference doc; private BytesReference doc;
@ -176,7 +171,10 @@ public class TermVectorsRequest extends SingleShardRequest<TermVectorsRequest> i
TermVectorsRequest(StreamInput in) throws IOException { TermVectorsRequest(StreamInput in) throws IOException {
super(in); super(in);
type = in.readString(); if (in.getVersion().before(Version.V_2_0_0)) {
// types no longer supported; ignore for BWC
in.readString();
}
id = in.readString(); id = in.readString();
if (in.readBoolean()) { if (in.readBoolean()) {
@ -218,24 +216,20 @@ public class TermVectorsRequest extends SingleShardRequest<TermVectorsRequest> i
/** /**
* Constructs a new term vector request for a document that will be fetch * Constructs a new term vector request for a document that will be fetch
* from the provided index. Use {@link #type(String)} and * from the provided index. Use {@link #id(String)} to specify the document to load.
* {@link #id(String)} to specify the document to load.
*/ */
public TermVectorsRequest(String index, String type, String id) { public TermVectorsRequest(String index, String id) {
super(index); super(index);
this.id = id; this.id = id;
this.type = type;
} }
/** /**
* Constructs a new term vector request for a document that will be fetch * Constructs a new term vector request for a document that will be fetch
* from the provided index. Use {@link #type(String)} and * from the provided index. Use {@link #id(String)} to specify the document to load.
* {@link #id(String)} to specify the document to load.
*/ */
public TermVectorsRequest(TermVectorsRequest other) { public TermVectorsRequest(TermVectorsRequest other) {
super(other.index()); super(other.index());
this.id = other.id(); this.id = other.id();
this.type = other.type();
if (other.doc != null) { if (other.doc != null) {
this.doc = new BytesArray(other.doc().toBytesRef(), true); this.doc = new BytesArray(other.doc().toBytesRef(), true);
this.xContentType = other.xContentType; this.xContentType = other.xContentType;
@ -258,7 +252,6 @@ public class TermVectorsRequest extends SingleShardRequest<TermVectorsRequest> i
public TermVectorsRequest(MultiGetRequest.Item item) { public TermVectorsRequest(MultiGetRequest.Item item) {
super(item.index()); super(item.index());
this.id = item.id(); this.id = item.id();
this.type = item.type();
this.selectedFields(item.storedFields()); this.selectedFields(item.storedFields());
this.routing(item.routing()); this.routing(item.routing());
} }
@ -267,21 +260,6 @@ public class TermVectorsRequest extends SingleShardRequest<TermVectorsRequest> i
return flagsEnum; return flagsEnum;
} }
/**
* Sets the type of document to get the term vector for.
*/
public TermVectorsRequest type(String type) {
this.type = type;
return this;
}
/**
* Returns the type of document to get the term vector for.
*/
public String type() {
return type;
}
/** /**
* Returns the id of document the term vector is requested for. * Returns the id of document the term vector is requested for.
*/ */
@ -535,9 +513,6 @@ public class TermVectorsRequest extends SingleShardRequest<TermVectorsRequest> i
@Override @Override
public ActionRequestValidationException validate() { public ActionRequestValidationException validate() {
ActionRequestValidationException validationException = super.validateNonNullIndex(); ActionRequestValidationException validationException = super.validateNonNullIndex();
if (type == null) {
validationException = ValidateActions.addValidationError("type is missing", validationException);
}
if (id == null && doc == null) { if (id == null && doc == null) {
validationException = ValidateActions.addValidationError("id or doc is missing", validationException); validationException = ValidateActions.addValidationError("id or doc is missing", validationException);
} }
@ -547,7 +522,10 @@ public class TermVectorsRequest extends SingleShardRequest<TermVectorsRequest> i
@Override @Override
public void writeTo(StreamOutput out) throws IOException { public void writeTo(StreamOutput out) throws IOException {
super.writeTo(out); super.writeTo(out);
out.writeString(type); if (out.getVersion().before(Version.V_2_0_0)) {
// types no longer supported; send "_doc" for bwc
out.writeString(MapperService.SINGLE_MAPPING_NAME);
}
out.writeString(id); out.writeString(id);
out.writeBoolean(doc != null); out.writeBoolean(doc != null);
@ -631,9 +609,6 @@ public class TermVectorsRequest extends SingleShardRequest<TermVectorsRequest> i
} else if (INDEX.match(currentFieldName, parser.getDeprecationHandler())) { } else if (INDEX.match(currentFieldName, parser.getDeprecationHandler())) {
// the following is important for multi request parsing. // the following is important for multi request parsing.
termVectorsRequest.index = parser.text(); termVectorsRequest.index = parser.text();
} else if (TYPE.match(currentFieldName, parser.getDeprecationHandler())) {
termVectorsRequest.type = parser.text();
deprecationLogger.deprecate("termvectors_with_types", RestTermVectorsAction.TYPES_DEPRECATION_MESSAGE);
} else if (ID.match(currentFieldName, parser.getDeprecationHandler())) { } else if (ID.match(currentFieldName, parser.getDeprecationHandler())) {
if (termVectorsRequest.doc != null) { if (termVectorsRequest.doc != null) {
throw new OpenSearchParseException( throw new OpenSearchParseException(

View File

@ -54,11 +54,10 @@ public class TermVectorsRequestBuilder extends ActionRequestBuilder<TermVectorsR
/** /**
* Constructs a new term vector request builder for a document that will be fetch * Constructs a new term vector request builder for a document that will be fetch
* from the provided index. Use {@code index}, {@code type} and * from the provided index. Use {@code index}, and {@code id} to specify the document to load.
* {@code id} to specify the document to load.
*/ */
public TermVectorsRequestBuilder(OpenSearchClient client, TermVectorsAction action, String index, String type, String id) { public TermVectorsRequestBuilder(OpenSearchClient client, TermVectorsAction action, String index, String id) {
super(client, action, new TermVectorsRequest(index, type, id)); super(client, action, new TermVectorsRequest(index, id));
} }
/** /**
@ -69,14 +68,6 @@ public class TermVectorsRequestBuilder extends ActionRequestBuilder<TermVectorsR
return this; return this;
} }
/**
* Sets the type of the document.
*/
public TermVectorsRequestBuilder setType(String type) {
request.type(type);
return this;
}
/** /**
* Sets the id of the document. * Sets the id of the document.
*/ */

View File

@ -40,6 +40,7 @@ import org.apache.lucene.search.BoostAttribute;
import org.apache.lucene.util.ArrayUtil; import org.apache.lucene.util.ArrayUtil;
import org.apache.lucene.util.BytesRef; import org.apache.lucene.util.BytesRef;
import org.apache.lucene.util.CharsRefBuilder; import org.apache.lucene.util.CharsRefBuilder;
import org.opensearch.Version;
import org.opensearch.action.ActionResponse; import org.opensearch.action.ActionResponse;
import org.opensearch.common.bytes.BytesArray; import org.opensearch.common.bytes.BytesArray;
import org.opensearch.common.bytes.BytesReference; import org.opensearch.common.bytes.BytesReference;
@ -49,6 +50,7 @@ import org.opensearch.common.io.stream.StreamOutput;
import org.opensearch.common.unit.TimeValue; import org.opensearch.common.unit.TimeValue;
import org.opensearch.common.xcontent.ToXContentObject; import org.opensearch.common.xcontent.ToXContentObject;
import org.opensearch.common.xcontent.XContentBuilder; import org.opensearch.common.xcontent.XContentBuilder;
import org.opensearch.index.mapper.MapperService;
import java.io.IOException; import java.io.IOException;
import java.util.Collections; import java.util.Collections;
@ -77,7 +79,6 @@ public class TermVectorsResponse extends ActionResponse implements ToXContentObj
public static final String END_OFFSET = "end_offset"; public static final String END_OFFSET = "end_offset";
public static final String PAYLOAD = "payload"; public static final String PAYLOAD = "payload";
public static final String _INDEX = "_index"; public static final String _INDEX = "_index";
public static final String _TYPE = "_type";
public static final String _ID = "_id"; public static final String _ID = "_id";
public static final String _VERSION = "_version"; public static final String _VERSION = "_version";
public static final String FOUND = "found"; public static final String FOUND = "found";
@ -89,7 +90,6 @@ public class TermVectorsResponse extends ActionResponse implements ToXContentObj
private BytesReference termVectors; private BytesReference termVectors;
private BytesReference headerRef; private BytesReference headerRef;
private String index; private String index;
private String type;
private String id; private String id;
private long docVersion; private long docVersion;
private boolean exists = false; private boolean exists = false;
@ -104,9 +104,8 @@ public class TermVectorsResponse extends ActionResponse implements ToXContentObj
int[] currentEndOffset = new int[0]; int[] currentEndOffset = new int[0];
BytesReference[] currentPayloads = new BytesReference[0]; BytesReference[] currentPayloads = new BytesReference[0];
public TermVectorsResponse(String index, String type, String id) { public TermVectorsResponse(String index, String id) {
this.index = index; this.index = index;
this.type = type;
this.id = id; this.id = id;
} }
@ -114,7 +113,10 @@ public class TermVectorsResponse extends ActionResponse implements ToXContentObj
TermVectorsResponse(StreamInput in) throws IOException { TermVectorsResponse(StreamInput in) throws IOException {
index = in.readString(); index = in.readString();
type = in.readString(); if (in.getVersion().before(Version.V_2_0_0)) {
// ignore deprecated/removed type
in.readString();
}
id = in.readString(); id = in.readString();
docVersion = in.readVLong(); docVersion = in.readVLong();
exists = in.readBoolean(); exists = in.readBoolean();
@ -129,7 +131,10 @@ public class TermVectorsResponse extends ActionResponse implements ToXContentObj
@Override @Override
public void writeTo(StreamOutput out) throws IOException { public void writeTo(StreamOutput out) throws IOException {
out.writeString(index); out.writeString(index);
out.writeString(type); if (out.getVersion().before(Version.V_2_0_0)) {
// send empty array to previous version since types are no longer supported
out.writeString(MapperService.SINGLE_MAPPING_NAME);
}
out.writeString(id); out.writeString(id);
out.writeVLong(docVersion); out.writeVLong(docVersion);
final boolean docExists = isExists(); final boolean docExists = isExists();
@ -180,11 +185,9 @@ public class TermVectorsResponse extends ActionResponse implements ToXContentObj
@Override @Override
public XContentBuilder toXContent(XContentBuilder builder, Params params) throws IOException { public XContentBuilder toXContent(XContentBuilder builder, Params params) throws IOException {
assert index != null; assert index != null;
assert type != null;
assert id != null; assert id != null;
builder.startObject(); builder.startObject();
builder.field(FieldStrings._INDEX, index); builder.field(FieldStrings._INDEX, index);
builder.field(FieldStrings._TYPE, type);
if (!isArtificial()) { if (!isArtificial()) {
builder.field(FieldStrings._ID, id); builder.field(FieldStrings._ID, id);
} }
@ -420,10 +423,6 @@ public class TermVectorsResponse extends ActionResponse implements ToXContentObj
return index; return index;
} }
public String getType() {
return type;
}
public String getId() { public String getId() {
return id; return id;
} }

View File

@ -92,7 +92,6 @@ public class TransportMultiTermVectorsAction extends HandledTransportAction<Mult
null, null,
new MultiTermVectorsResponse.Failure( new MultiTermVectorsResponse.Failure(
termVectorsRequest.index(), termVectorsRequest.index(),
termVectorsRequest.type(),
termVectorsRequest.id(), termVectorsRequest.id(),
new IndexNotFoundException(termVectorsRequest.index()) new IndexNotFoundException(termVectorsRequest.index())
) )
@ -108,9 +107,8 @@ public class TransportMultiTermVectorsAction extends HandledTransportAction<Mult
null, null,
new MultiTermVectorsResponse.Failure( new MultiTermVectorsResponse.Failure(
concreteSingleIndex, concreteSingleIndex,
termVectorsRequest.type(),
termVectorsRequest.id(), termVectorsRequest.id(),
new RoutingMissingException(concreteSingleIndex, termVectorsRequest.type(), termVectorsRequest.id()) new RoutingMissingException(concreteSingleIndex, termVectorsRequest.id())
) )
) )
); );
@ -166,12 +164,7 @@ public class TransportMultiTermVectorsAction extends HandledTransportAction<Mult
shardRequest.locations.get(i), shardRequest.locations.get(i),
new MultiTermVectorsItemResponse( new MultiTermVectorsItemResponse(
null, null,
new MultiTermVectorsResponse.Failure( new MultiTermVectorsResponse.Failure(shardRequest.index(), termVectorsRequest.id(), e)
shardRequest.index(),
termVectorsRequest.type(),
termVectorsRequest.id(),
e
)
) )
); );
} }

View File

@ -117,16 +117,15 @@ public class TransportShardMultiTermsVectorAction extends TransportSingleShardAc
} else { } else {
logger.debug( logger.debug(
() -> new ParameterizedMessage( () -> new ParameterizedMessage(
"{} failed to execute multi term vectors for [{}]/[{}]", "{} failed to execute multi term vectors for [{}]",
shardId, shardId,
termVectorsRequest.type(),
termVectorsRequest.id() termVectorsRequest.id()
), ),
e e
); );
response.add( response.add(
request.locations.get(i), request.locations.get(i),
new MultiTermVectorsResponse.Failure(request.index(), termVectorsRequest.type(), termVectorsRequest.id(), e) new MultiTermVectorsResponse.Failure(request.index(), termVectorsRequest.id(), e)
); );
} }
} }

View File

@ -107,7 +107,7 @@ public class TransportTermVectorsAction extends TransportSingleShardAction<TermV
request.request().routing(state.metadata().resolveIndexRouting(request.request().routing(), request.request().index())); request.request().routing(state.metadata().resolveIndexRouting(request.request().routing(), request.request().index()));
// Fail fast on the node that received the request. // Fail fast on the node that received the request.
if (request.request().routing() == null && state.getMetadata().routingRequired(request.concreteIndex())) { if (request.request().routing() == null && state.getMetadata().routingRequired(request.concreteIndex())) {
throw new RoutingMissingException(request.concreteIndex(), request.request().type(), request.request().id()); throw new RoutingMissingException(request.concreteIndex(), request.request().id());
} }
} }

View File

@ -375,10 +375,9 @@ public interface Client extends OpenSearchClient, Releasable {
* Builder for the term vector request. * Builder for the term vector request.
* *
* @param index The index to load the document from * @param index The index to load the document from
* @param type The type of the document
* @param id The id of the document * @param id The id of the document
*/ */
TermVectorsRequestBuilder prepareTermVectors(String index, String type, String id); TermVectorsRequestBuilder prepareTermVectors(String index, String id);
/** /**
* Multi get term vectors. * Multi get term vectors.

View File

@ -612,8 +612,8 @@ public abstract class AbstractClient implements Client {
} }
@Override @Override
public TermVectorsRequestBuilder prepareTermVectors(String index, String type, String id) { public TermVectorsRequestBuilder prepareTermVectors(String index, String id) {
return new TermVectorsRequestBuilder(this, TermVectorsAction.INSTANCE, index, type, id); return new TermVectorsRequestBuilder(this, TermVectorsAction.INSTANCE, index, id);
} }
@Override @Override

View File

@ -39,6 +39,7 @@ import org.apache.lucene.search.BooleanQuery;
import org.apache.lucene.search.Query; import org.apache.lucene.search.Query;
import org.opensearch.OpenSearchParseException; import org.opensearch.OpenSearchParseException;
import org.opensearch.ExceptionsHelper; import org.opensearch.ExceptionsHelper;
import org.opensearch.Version;
import org.opensearch.action.RoutingMissingException; import org.opensearch.action.RoutingMissingException;
import org.opensearch.action.termvectors.MultiTermVectorsItemResponse; import org.opensearch.action.termvectors.MultiTermVectorsItemResponse;
import org.opensearch.action.termvectors.MultiTermVectorsRequest; import org.opensearch.action.termvectors.MultiTermVectorsRequest;
@ -54,7 +55,6 @@ import org.opensearch.common.bytes.BytesReference;
import org.opensearch.common.io.stream.StreamInput; import org.opensearch.common.io.stream.StreamInput;
import org.opensearch.common.io.stream.StreamOutput; import org.opensearch.common.io.stream.StreamOutput;
import org.opensearch.common.io.stream.Writeable; import org.opensearch.common.io.stream.Writeable;
import org.opensearch.common.logging.DeprecationLogger;
import org.opensearch.common.lucene.search.MoreLikeThisQuery; import org.opensearch.common.lucene.search.MoreLikeThisQuery;
import org.opensearch.common.lucene.search.XMoreLikeThis; import org.opensearch.common.lucene.search.XMoreLikeThis;
import org.opensearch.common.lucene.uid.Versions; import org.opensearch.common.lucene.uid.Versions;
@ -67,7 +67,6 @@ import org.opensearch.index.VersionType;
import org.opensearch.index.mapper.IdFieldMapper; import org.opensearch.index.mapper.IdFieldMapper;
import org.opensearch.index.mapper.KeywordFieldMapper.KeywordFieldType; import org.opensearch.index.mapper.KeywordFieldMapper.KeywordFieldType;
import org.opensearch.index.mapper.MappedFieldType; import org.opensearch.index.mapper.MappedFieldType;
import org.opensearch.index.mapper.MapperService;
import org.opensearch.index.mapper.TextFieldMapper.TextFieldType; import org.opensearch.index.mapper.TextFieldMapper.TextFieldType;
import java.io.IOException; import java.io.IOException;
@ -81,7 +80,6 @@ import java.util.Map;
import java.util.Objects; import java.util.Objects;
import java.util.Optional; import java.util.Optional;
import java.util.Set; import java.util.Set;
import java.util.stream.Stream;
import static org.opensearch.common.xcontent.XContentFactory.jsonBuilder; import static org.opensearch.common.xcontent.XContentFactory.jsonBuilder;
@ -92,7 +90,6 @@ import static org.opensearch.common.xcontent.XContentFactory.jsonBuilder;
*/ */
public class MoreLikeThisQueryBuilder extends AbstractQueryBuilder<MoreLikeThisQueryBuilder> { public class MoreLikeThisQueryBuilder extends AbstractQueryBuilder<MoreLikeThisQueryBuilder> {
public static final String NAME = "more_like_this"; public static final String NAME = "more_like_this";
private static final DeprecationLogger deprecationLogger = DeprecationLogger.getLogger(MoreLikeThisQueryBuilder.class);
static final String TYPES_DEPRECATION_MESSAGE = "[types removal] Types are deprecated in [more_like_this] " static final String TYPES_DEPRECATION_MESSAGE = "[types removal] Types are deprecated in [more_like_this] "
+ "queries. The type should no longer be specified in the [like] and [unlike] sections."; + "queries. The type should no longer be specified in the [like] and [unlike] sections.";
@ -128,7 +125,6 @@ public class MoreLikeThisQueryBuilder extends AbstractQueryBuilder<MoreLikeThisQ
private static final ParseField FAIL_ON_UNSUPPORTED_FIELD = new ParseField("fail_on_unsupported_field"); private static final ParseField FAIL_ON_UNSUPPORTED_FIELD = new ParseField("fail_on_unsupported_field");
private static final ParseField INDEX = new ParseField("_index"); private static final ParseField INDEX = new ParseField("_index");
private static final ParseField TYPE = new ParseField("_type");
private static final ParseField ID = new ParseField("_id"); private static final ParseField ID = new ParseField("_id");
public static final ParseField DOC = new ParseField("doc"); public static final ParseField DOC = new ParseField("doc");
private static final ParseField PER_FIELD_ANALYZER = new ParseField("per_field_analyzer"); private static final ParseField PER_FIELD_ANALYZER = new ParseField("per_field_analyzer");
@ -168,7 +164,6 @@ public class MoreLikeThisQueryBuilder extends AbstractQueryBuilder<MoreLikeThisQ
public static final Item[] EMPTY_ARRAY = new Item[0]; public static final Item[] EMPTY_ARRAY = new Item[0];
private String index; private String index;
private String type;
private String id; private String id;
private BytesReference doc; private BytesReference doc;
private XContentType xContentType; private XContentType xContentType;
@ -185,7 +180,6 @@ public class MoreLikeThisQueryBuilder extends AbstractQueryBuilder<MoreLikeThisQ
throw new IllegalArgumentException("Item requires either id or doc to be non-null"); throw new IllegalArgumentException("Item requires either id or doc to be non-null");
} }
this.index = copy.index; this.index = copy.index;
this.type = copy.type;
this.id = copy.id; this.id = copy.id;
this.routing = copy.routing; this.routing = copy.routing;
this.doc = copy.doc; this.doc = copy.doc;
@ -225,51 +219,15 @@ public class MoreLikeThisQueryBuilder extends AbstractQueryBuilder<MoreLikeThisQ
this.xContentType = doc.contentType(); this.xContentType = doc.contentType();
} }
/**
* Constructor for a given item / document request
*
* @param index the index where the document is located
* @param type the type of the document
* @param id and its id
*
* @deprecated Types are in the process of being removed, use {@link Item(String, String)} instead.
*/
@Deprecated
public Item(@Nullable String index, @Nullable String type, String id) {
if (id == null) {
throw new IllegalArgumentException("Item requires id to be non-null");
}
this.index = index;
this.type = type;
this.id = id;
}
/**
* Constructor for an artificial document request, that is not present in the index.
*
* @param index the index to be used for parsing the doc
* @param type the type to be used for parsing the doc
* @param doc the document specification
*
* @deprecated Types are in the process of being removed, use {@link Item(String, XContentBuilder)} instead.
*/
@Deprecated
public Item(@Nullable String index, @Nullable String type, XContentBuilder doc) {
if (doc == null) {
throw new IllegalArgumentException("Item requires doc to be non-null");
}
this.index = index;
this.type = type;
this.doc = BytesReference.bytes(doc);
this.xContentType = doc.contentType();
}
/** /**
* Read from a stream. * Read from a stream.
*/ */
Item(StreamInput in) throws IOException { Item(StreamInput in) throws IOException {
index = in.readOptionalString(); index = in.readOptionalString();
type = in.readOptionalString(); if (in.getVersion().before(Version.V_2_0_0)) {
// types no longer supported so ignore
in.readOptionalString();
}
if (in.readBoolean()) { if (in.readBoolean()) {
doc = (BytesReference) in.readGenericValue(); doc = (BytesReference) in.readGenericValue();
xContentType = in.readEnum(XContentType.class); xContentType = in.readEnum(XContentType.class);
@ -286,7 +244,10 @@ public class MoreLikeThisQueryBuilder extends AbstractQueryBuilder<MoreLikeThisQ
@Override @Override
public void writeTo(StreamOutput out) throws IOException { public void writeTo(StreamOutput out) throws IOException {
out.writeOptionalString(index); out.writeOptionalString(index);
out.writeOptionalString(type); if (out.getVersion().before(Version.V_2_0_0)) {
// types not supported so send an empty array to previous versions
out.writeOptionalString(null);
}
out.writeBoolean(doc != null); out.writeBoolean(doc != null);
if (doc != null) { if (doc != null) {
out.writeGenericValue(doc); out.writeGenericValue(doc);
@ -310,23 +271,6 @@ public class MoreLikeThisQueryBuilder extends AbstractQueryBuilder<MoreLikeThisQ
return this; return this;
} }
/**
* @deprecated Types are in the process of being removed.
*/
@Deprecated
public String type() {
return type;
}
/**
* @deprecated Types are in the process of being removed.
*/
@Deprecated
public Item type(String type) {
this.type = type;
return this;
}
public String id() { public String id() {
return id; return id;
} }
@ -391,7 +335,7 @@ public class MoreLikeThisQueryBuilder extends AbstractQueryBuilder<MoreLikeThisQ
* Convert this to a {@link TermVectorsRequest} for fetching the terms of the document. * Convert this to a {@link TermVectorsRequest} for fetching the terms of the document.
*/ */
TermVectorsRequest toTermVectorsRequest() { TermVectorsRequest toTermVectorsRequest() {
TermVectorsRequest termVectorsRequest = new TermVectorsRequest(index, type, id).selectedFields(fields) TermVectorsRequest termVectorsRequest = new TermVectorsRequest(index, id).selectedFields(fields)
.routing(routing) .routing(routing)
.version(version) .version(version)
.versionType(versionType) .versionType(versionType)
@ -421,8 +365,6 @@ public class MoreLikeThisQueryBuilder extends AbstractQueryBuilder<MoreLikeThisQ
} else if (currentFieldName != null) { } else if (currentFieldName != null) {
if (INDEX.match(currentFieldName, parser.getDeprecationHandler())) { if (INDEX.match(currentFieldName, parser.getDeprecationHandler())) {
item.index = parser.text(); item.index = parser.text();
} else if (TYPE.match(currentFieldName, parser.getDeprecationHandler())) {
item.type = parser.text();
} else if (ID.match(currentFieldName, parser.getDeprecationHandler())) { } else if (ID.match(currentFieldName, parser.getDeprecationHandler())) {
item.id = parser.text(); item.id = parser.text();
} else if (DOC.match(currentFieldName, parser.getDeprecationHandler())) { } else if (DOC.match(currentFieldName, parser.getDeprecationHandler())) {
@ -468,9 +410,6 @@ public class MoreLikeThisQueryBuilder extends AbstractQueryBuilder<MoreLikeThisQ
if (this.index != null) { if (this.index != null) {
builder.field(INDEX.getPreferredName(), this.index); builder.field(INDEX.getPreferredName(), this.index);
} }
if (this.type != null) {
builder.field(TYPE.getPreferredName(), this.type);
}
if (this.id != null) { if (this.id != null) {
builder.field(ID.getPreferredName(), this.id); builder.field(ID.getPreferredName(), this.id);
} }
@ -511,7 +450,7 @@ public class MoreLikeThisQueryBuilder extends AbstractQueryBuilder<MoreLikeThisQ
@Override @Override
public int hashCode() { public int hashCode() {
return Objects.hash(index, type, id, doc, Arrays.hashCode(fields), perFieldAnalyzer, routing, version, versionType); return Objects.hash(index, id, doc, Arrays.hashCode(fields), perFieldAnalyzer, routing, version, versionType);
} }
@Override @Override
@ -520,7 +459,6 @@ public class MoreLikeThisQueryBuilder extends AbstractQueryBuilder<MoreLikeThisQ
if (!(o instanceof Item)) return false; if (!(o instanceof Item)) return false;
Item other = (Item) o; Item other = (Item) o;
return Objects.equals(index, other.index) return Objects.equals(index, other.index)
&& Objects.equals(type, other.type)
&& Objects.equals(id, other.id) && Objects.equals(id, other.id)
&& Objects.equals(doc, other.doc) && Objects.equals(doc, other.doc)
&& Arrays.equals(fields, other.fields) // otherwise we are comparing pointers && Arrays.equals(fields, other.fields) // otherwise we are comparing pointers
@ -973,16 +911,9 @@ public class MoreLikeThisQueryBuilder extends AbstractQueryBuilder<MoreLikeThisQ
moreLikeThisQueryBuilder.stopWords(stopWords); moreLikeThisQueryBuilder.stopWords(stopWords);
} }
if (moreLikeThisQueryBuilder.isTypeless() == false) {
deprecationLogger.deprecate("more_like_this_query_with_types", TYPES_DEPRECATION_MESSAGE);
}
return moreLikeThisQueryBuilder; return moreLikeThisQueryBuilder;
} }
public boolean isTypeless() {
return Stream.concat(Arrays.stream(likeItems), Arrays.stream(unlikeItems)).allMatch(item -> item.type == null);
}
private static void parseLikeField(XContentParser parser, List<String> texts, List<Item> items) throws IOException { private static void parseLikeField(XContentParser parser, List<String> texts, List<Item> items) throws IOException {
if (parser.currentToken().isValue()) { if (parser.currentToken().isValue()) {
texts.add(parser.text()); texts.add(parser.text());
@ -1150,9 +1081,6 @@ public class MoreLikeThisQueryBuilder extends AbstractQueryBuilder<MoreLikeThisQ
if (item.index() == null) { if (item.index() == null) {
item.index(context.index().getName()); item.index(context.index().getName());
} }
if (item.type() == null) {
item.type(MapperService.SINGLE_MAPPING_NAME);
}
// default fields if not present but don't override for artificial docs // default fields if not present but don't override for artificial docs
if ((item.fields() == null || item.fields().length == 0) && item.doc() == null) { if ((item.fields() == null || item.fields().length == 0) && item.doc() == null) {
if (useDefaultField) { if (useDefaultField) {

View File

@ -93,11 +93,7 @@ public class TermVectorsService {
static TermVectorsResponse getTermVectors(IndexShard indexShard, TermVectorsRequest request, LongSupplier nanoTimeSupplier) { static TermVectorsResponse getTermVectors(IndexShard indexShard, TermVectorsRequest request, LongSupplier nanoTimeSupplier) {
final long startTime = nanoTimeSupplier.getAsLong(); final long startTime = nanoTimeSupplier.getAsLong();
final TermVectorsResponse termVectorsResponse = new TermVectorsResponse( final TermVectorsResponse termVectorsResponse = new TermVectorsResponse(indexShard.shardId().getIndex().getName(), request.id());
indexShard.shardId().getIndex().getName(),
request.type(),
request.id()
);
final Term uidTerm = new Term(IdFieldMapper.NAME, Uid.encodeId(request.id())); final Term uidTerm = new Term(IdFieldMapper.NAME, Uid.encodeId(request.id()));
Fields termVectorsByField = null; Fields termVectorsByField = null;
@ -110,8 +106,9 @@ public class TermVectorsService {
try ( try (
Engine.GetResult get = indexShard.get( Engine.GetResult get = indexShard.get(
new Engine.Get(request.realtime(), false, request.type(), request.id(), uidTerm).version(request.version()) new Engine.Get(request.realtime(), false, MapperService.SINGLE_MAPPING_NAME, request.id(), uidTerm).version(
.versionType(request.versionType()) request.version()
).versionType(request.versionType())
); );
Engine.Searcher searcher = indexShard.acquireSearcher("term_vector") Engine.Searcher searcher = indexShard.acquireSearcher("term_vector")
) { ) {
@ -238,7 +235,7 @@ public class TermVectorsService {
/* generate term vectors from fetched document fields */ /* generate term vectors from fetched document fields */
String[] getFields = validFields.toArray(new String[validFields.size() + 1]); String[] getFields = validFields.toArray(new String[validFields.size() + 1]);
getFields[getFields.length - 1] = SourceFieldMapper.NAME; getFields[getFields.length - 1] = SourceFieldMapper.NAME;
GetResult getResult = indexShard.getService().get(get, request.id(), request.type(), getFields, null); GetResult getResult = indexShard.getService().get(get, request.id(), MapperService.SINGLE_MAPPING_NAME, getFields, null);
Fields generatedTermVectors = generateTermVectors( Fields generatedTermVectors = generateTermVectors(
indexShard, indexShard,
getResult.sourceAsMap(), getResult.sourceAsMap(),
@ -329,7 +326,6 @@ public class TermVectorsService {
ParsedDocument parsedDocument = parseDocument( ParsedDocument parsedDocument = parseDocument(
indexShard, indexShard,
indexShard.shardId().getIndexName(), indexShard.shardId().getIndexName(),
request.type(),
request.doc(), request.doc(),
request.xContentType(), request.xContentType(),
request.routing() request.routing()
@ -389,15 +385,14 @@ public class TermVectorsService {
private static ParsedDocument parseDocument( private static ParsedDocument parseDocument(
IndexShard indexShard, IndexShard indexShard,
String index, String index,
String type,
BytesReference doc, BytesReference doc,
XContentType xContentType, XContentType xContentType,
String routing String routing
) { ) {
MapperService mapperService = indexShard.mapperService(); MapperService mapperService = indexShard.mapperService();
DocumentMapperForType docMapper = mapperService.documentMapperWithAutoCreate(type); DocumentMapperForType docMapper = mapperService.documentMapperWithAutoCreate(MapperService.SINGLE_MAPPING_NAME);
ParsedDocument parsedDocument = docMapper.getDocumentMapper() ParsedDocument parsedDocument = docMapper.getDocumentMapper()
.parse(new SourceToParse(index, type, "_id_for_tv_api", doc, xContentType, routing)); .parse(new SourceToParse(index, MapperService.SINGLE_MAPPING_NAME, "_id_for_tv_api", doc, xContentType, routing));
if (docMapper.getMapping() != null) { if (docMapper.getMapping() != null) {
parsedDocument.addDynamicMappingsUpdate(docMapper.getMapping()); parsedDocument.addDynamicMappingsUpdate(docMapper.getMapping());
} }

View File

@ -37,7 +37,6 @@ import org.opensearch.action.termvectors.TermVectorsRequest;
import org.opensearch.client.node.NodeClient; import org.opensearch.client.node.NodeClient;
import org.opensearch.common.Strings; import org.opensearch.common.Strings;
import org.opensearch.common.logging.DeprecationLogger; import org.opensearch.common.logging.DeprecationLogger;
import org.opensearch.index.mapper.MapperService;
import org.opensearch.rest.BaseRestHandler; import org.opensearch.rest.BaseRestHandler;
import org.opensearch.rest.RestRequest; import org.opensearch.rest.RestRequest;
import org.opensearch.rest.action.RestToXContentListener; import org.opensearch.rest.action.RestToXContentListener;
@ -79,13 +78,6 @@ public class RestMultiTermVectorsAction extends BaseRestHandler {
MultiTermVectorsRequest multiTermVectorsRequest = new MultiTermVectorsRequest(); MultiTermVectorsRequest multiTermVectorsRequest = new MultiTermVectorsRequest();
TermVectorsRequest template = new TermVectorsRequest().index(request.param("index")); TermVectorsRequest template = new TermVectorsRequest().index(request.param("index"));
if (request.hasParam("type")) {
deprecationLogger.deprecate("mtermvectors_with_types", TYPES_DEPRECATION_MESSAGE);
template.type(request.param("type"));
} else {
template.type(MapperService.SINGLE_MAPPING_NAME);
}
RestTermVectorsAction.readURIParameters(template, request); RestTermVectorsAction.readURIParameters(template, request);
multiTermVectorsRequest.ids(Strings.commaDelimitedListToStringArray(request.param("ids"))); multiTermVectorsRequest.ids(Strings.commaDelimitedListToStringArray(request.param("ids")));
request.withContentOrSourceParamParserOrNull(p -> multiTermVectorsRequest.add(template, p)); request.withContentOrSourceParamParserOrNull(p -> multiTermVectorsRequest.add(template, p));

View File

@ -35,10 +35,8 @@ package org.opensearch.rest.action.document;
import org.opensearch.action.termvectors.TermVectorsRequest; import org.opensearch.action.termvectors.TermVectorsRequest;
import org.opensearch.client.node.NodeClient; import org.opensearch.client.node.NodeClient;
import org.opensearch.common.Strings; import org.opensearch.common.Strings;
import org.opensearch.common.logging.DeprecationLogger;
import org.opensearch.common.xcontent.XContentParser; import org.opensearch.common.xcontent.XContentParser;
import org.opensearch.index.VersionType; import org.opensearch.index.VersionType;
import org.opensearch.index.mapper.MapperService;
import org.opensearch.rest.BaseRestHandler; import org.opensearch.rest.BaseRestHandler;
import org.opensearch.rest.RestRequest; import org.opensearch.rest.RestRequest;
import org.opensearch.rest.action.RestActions; import org.opensearch.rest.action.RestActions;
@ -59,7 +57,6 @@ import static org.opensearch.rest.RestRequest.Method.POST;
* TermVectorsRequest. * TermVectorsRequest.
*/ */
public class RestTermVectorsAction extends BaseRestHandler { public class RestTermVectorsAction extends BaseRestHandler {
private static final DeprecationLogger deprecationLogger = DeprecationLogger.getLogger(RestTermVectorsAction.class);
public static final String TYPES_DEPRECATION_MESSAGE = "[types removal] " + "Specifying types in term vector requests is deprecated."; public static final String TYPES_DEPRECATION_MESSAGE = "[types removal] " + "Specifying types in term vector requests is deprecated.";
@Override @Override
@ -86,14 +83,7 @@ public class RestTermVectorsAction extends BaseRestHandler {
@Override @Override
public RestChannelConsumer prepareRequest(final RestRequest request, final NodeClient client) throws IOException { public RestChannelConsumer prepareRequest(final RestRequest request, final NodeClient client) throws IOException {
TermVectorsRequest termVectorsRequest; TermVectorsRequest termVectorsRequest = new TermVectorsRequest(request.param("index"), request.param("id"));
if (request.hasParam("type")) {
deprecationLogger.deprecate("termvectors_with_types", TYPES_DEPRECATION_MESSAGE);
termVectorsRequest = new TermVectorsRequest(request.param("index"), request.param("type"), request.param("id"));
} else {
termVectorsRequest = new TermVectorsRequest(request.param("index"), MapperService.SINGLE_MAPPING_NAME, request.param("id"));
}
if (request.hasContentOrSourceParam()) { if (request.hasContentOrSourceParam()) {
try (XContentParser parser = request.contentOrSourceParamParser()) { try (XContentParser parser = request.contentOrSourceParamParser()) {
TermVectorsRequest.parseRequest(termVectorsRequest, parser); TermVectorsRequest.parseRequest(termVectorsRequest, parser);

View File

@ -431,7 +431,7 @@ public abstract class AbstractTermVectorsTestCase extends OpenSearchIntegTestCas
} }
protected TermVectorsRequestBuilder getRequestForConfig(TestConfig config) { protected TermVectorsRequestBuilder getRequestForConfig(TestConfig config) {
return client().prepareTermVectors(randomBoolean() ? config.doc.index : config.doc.alias, config.doc.type, config.doc.id) return client().prepareTermVectors(randomBoolean() ? config.doc.index : config.doc.alias, config.doc.id)
.setPayloads(config.requestPayloads) .setPayloads(config.requestPayloads)
.setOffsets(config.requestOffsets) .setOffsets(config.requestOffsets)
.setPositions(config.requestPositions) .setPositions(config.requestPositions)

View File

@ -193,7 +193,7 @@ public class GetTermVectorsTests extends OpenSearchSingleNodeTestCase {
.execute() .execute()
.actionGet(); .actionGet();
client().admin().indices().prepareRefresh().get(); client().admin().indices().prepareRefresh().get();
TermVectorsRequestBuilder resp = client().prepareTermVectors("test", "type1", Integer.toString(1)) TermVectorsRequestBuilder resp = client().prepareTermVectors("test", Integer.toString(1))
.setPayloads(true) .setPayloads(true)
.setOffsets(true) .setOffsets(true)
.setPositions(true) .setPositions(true)

View File

@ -49,6 +49,7 @@ import org.apache.lucene.search.ScoreDoc;
import org.apache.lucene.search.TermQuery; import org.apache.lucene.search.TermQuery;
import org.apache.lucene.search.TopDocs; import org.apache.lucene.search.TopDocs;
import org.apache.lucene.store.Directory; import org.apache.lucene.store.Directory;
import org.opensearch.LegacyESVersion;
import org.opensearch.action.termvectors.TermVectorsRequest.Flag; import org.opensearch.action.termvectors.TermVectorsRequest.Flag;
import org.opensearch.common.bytes.BytesArray; import org.opensearch.common.bytes.BytesArray;
import org.opensearch.common.bytes.BytesReference; import org.opensearch.common.bytes.BytesReference;
@ -57,7 +58,9 @@ import org.opensearch.common.io.stream.OutputStreamStreamOutput;
import org.opensearch.common.xcontent.XContentParser; import org.opensearch.common.xcontent.XContentParser;
import org.opensearch.common.xcontent.XContentType; import org.opensearch.common.xcontent.XContentType;
import org.opensearch.common.xcontent.json.JsonXContent; import org.opensearch.common.xcontent.json.JsonXContent;
import org.opensearch.index.shard.ShardId;
import org.opensearch.rest.action.document.RestTermVectorsAction; import org.opensearch.rest.action.document.RestTermVectorsAction;
import org.opensearch.tasks.TaskId;
import org.opensearch.test.OpenSearchTestCase; import org.opensearch.test.OpenSearchTestCase;
import org.opensearch.test.StreamsUtils; import org.opensearch.test.StreamsUtils;
import org.hamcrest.Matchers; import org.hamcrest.Matchers;
@ -74,7 +77,7 @@ import static org.hamcrest.Matchers.equalTo;
public class TermVectorsUnitTests extends OpenSearchTestCase { public class TermVectorsUnitTests extends OpenSearchTestCase {
public void testStreamResponse() throws Exception { public void testStreamResponse() throws Exception {
TermVectorsResponse outResponse = new TermVectorsResponse("a", "b", "c"); TermVectorsResponse outResponse = new TermVectorsResponse("a", "c");
outResponse.setExists(true); outResponse.setExists(true);
writeStandardTermVector(outResponse); writeStandardTermVector(outResponse);
@ -91,7 +94,7 @@ public class TermVectorsUnitTests extends OpenSearchTestCase {
// see if correct // see if correct
checkIfStandardTermVector(inResponse); checkIfStandardTermVector(inResponse);
outResponse = new TermVectorsResponse("a", "b", "c"); outResponse = new TermVectorsResponse("a", "c");
writeEmptyTermVector(outResponse); writeEmptyTermVector(outResponse);
// write // write
outBuffer = new ByteArrayOutputStream(); outBuffer = new ByteArrayOutputStream();
@ -185,7 +188,7 @@ public class TermVectorsUnitTests extends OpenSearchTestCase {
" {\"fields\" : [\"a\", \"b\",\"c\"], \"offsets\":false, \"positions\":false, \"payloads\":true}" " {\"fields\" : [\"a\", \"b\",\"c\"], \"offsets\":false, \"positions\":false, \"payloads\":true}"
); );
TermVectorsRequest tvr = new TermVectorsRequest(null, null, null); TermVectorsRequest tvr = new TermVectorsRequest(null, null);
XContentParser parser = createParser(JsonXContent.jsonXContent, inputBytes); XContentParser parser = createParser(JsonXContent.jsonXContent, inputBytes);
TermVectorsRequest.parseRequest(tvr, parser); TermVectorsRequest.parseRequest(tvr, parser);
@ -206,7 +209,7 @@ public class TermVectorsUnitTests extends OpenSearchTestCase {
RestTermVectorsAction.addFieldStringsFromParameter(tvr, additionalFields); RestTermVectorsAction.addFieldStringsFromParameter(tvr, additionalFields);
inputBytes = new BytesArray(" {\"offsets\":false, \"positions\":false, \"payloads\":true}"); inputBytes = new BytesArray(" {\"offsets\":false, \"positions\":false, \"payloads\":true}");
tvr = new TermVectorsRequest(null, null, null); tvr = new TermVectorsRequest(null, null);
parser = createParser(JsonXContent.jsonXContent, inputBytes); parser = createParser(JsonXContent.jsonXContent, inputBytes);
TermVectorsRequest.parseRequest(tvr, parser); TermVectorsRequest.parseRequest(tvr, parser);
additionalFields = ""; additionalFields = "";
@ -222,7 +225,7 @@ public class TermVectorsUnitTests extends OpenSearchTestCase {
BytesReference inputBytes = new BytesArray( BytesReference inputBytes = new BytesArray(
" {\"fields\" : \"a, b,c \", \"offsets\":false, \"positions\":false, \"payloads\":true, \"meaningless_term\":2}" " {\"fields\" : \"a, b,c \", \"offsets\":false, \"positions\":false, \"payloads\":true, \"meaningless_term\":2}"
); );
TermVectorsRequest tvr = new TermVectorsRequest(null, null, null); TermVectorsRequest tvr = new TermVectorsRequest(null, null);
boolean threwException = false; boolean threwException = false;
try { try {
XContentParser parser = createParser(JsonXContent.jsonXContent, inputBytes); XContentParser parser = createParser(JsonXContent.jsonXContent, inputBytes);
@ -236,7 +239,7 @@ public class TermVectorsUnitTests extends OpenSearchTestCase {
public void testStreamRequest() throws IOException { public void testStreamRequest() throws IOException {
for (int i = 0; i < 10; i++) { for (int i = 0; i < 10; i++) {
TermVectorsRequest request = new TermVectorsRequest("index", "type", "id"); TermVectorsRequest request = new TermVectorsRequest("index", "id");
request.offsets(random().nextBoolean()); request.offsets(random().nextBoolean());
request.fieldStatistics(random().nextBoolean()); request.fieldStatistics(random().nextBoolean());
request.payloads(random().nextBoolean()); request.payloads(random().nextBoolean());
@ -252,9 +255,55 @@ public class TermVectorsUnitTests extends OpenSearchTestCase {
request.writeTo(out); request.writeTo(out);
// read // read
ByteArrayInputStream esInBuffer = new ByteArrayInputStream(outBuffer.toByteArray()); ByteArrayInputStream opensearchInBuffer = new ByteArrayInputStream(outBuffer.toByteArray());
InputStreamStreamInput esBuffer = new InputStreamStreamInput(esInBuffer); InputStreamStreamInput opensearchBuffer = new InputStreamStreamInput(opensearchInBuffer);
TermVectorsRequest req2 = new TermVectorsRequest(esBuffer); TermVectorsRequest req2 = new TermVectorsRequest(opensearchBuffer);
assertThat(request.offsets(), equalTo(req2.offsets()));
assertThat(request.fieldStatistics(), equalTo(req2.fieldStatistics()));
assertThat(request.payloads(), equalTo(req2.payloads()));
assertThat(request.positions(), equalTo(req2.positions()));
assertThat(request.termStatistics(), equalTo(req2.termStatistics()));
assertThat(request.preference(), equalTo(pref));
assertThat(request.routing(), equalTo(null));
assertEquals(new BytesArray("{}"), request.doc());
assertEquals(XContentType.JSON, request.xContentType());
}
}
public void testStreamRequestLegacyVersion() throws IOException {
for (int i = 0; i < 10; i++) {
TermVectorsRequest request = new TermVectorsRequest("index", "id");
request.offsets(random().nextBoolean());
request.fieldStatistics(random().nextBoolean());
request.payloads(random().nextBoolean());
request.positions(random().nextBoolean());
request.termStatistics(random().nextBoolean());
String pref = random().nextBoolean() ? "somePreference" : null;
request.preference(pref);
request.doc(new BytesArray("{}"), randomBoolean(), XContentType.JSON);
// write using older version which contains types
ByteArrayOutputStream outBuffer = new ByteArrayOutputStream();
OutputStreamStreamOutput out = new OutputStreamStreamOutput(outBuffer);
out.setVersion(LegacyESVersion.V_7_2_0);
request.writeTo(out);
// First check the type on the stream was written as "_doc" by manually parsing the stream until the type
ByteArrayInputStream opensearchInBuffer = new ByteArrayInputStream(outBuffer.toByteArray());
InputStreamStreamInput opensearchBuffer = new InputStreamStreamInput(opensearchInBuffer);
TaskId.readFromStream(opensearchBuffer);
if (opensearchBuffer.readBoolean()) {
new ShardId(opensearchBuffer);
}
opensearchBuffer.readOptionalString();
assertThat(opensearchBuffer.readString(), equalTo("_doc"));
// now read the stream as normal to check it is parsed correct if received from an older node
opensearchInBuffer = new ByteArrayInputStream(outBuffer.toByteArray());
opensearchBuffer = new InputStreamStreamInput(opensearchInBuffer);
opensearchBuffer.setVersion(LegacyESVersion.V_7_2_0);
TermVectorsRequest req2 = new TermVectorsRequest(opensearchBuffer);
assertThat(request.offsets(), equalTo(req2.offsets())); assertThat(request.offsets(), equalTo(req2.offsets()));
assertThat(request.fieldStatistics(), equalTo(req2.fieldStatistics())); assertThat(request.fieldStatistics(), equalTo(req2.fieldStatistics()));
@ -281,7 +330,6 @@ public class TermVectorsUnitTests extends OpenSearchTestCase {
request.add(new TermVectorsRequest(), data); request.add(new TermVectorsRequest(), data);
checkParsedParameters(request); checkParsedParameters(request);
assertWarnings(RestTermVectorsAction.TYPES_DEPRECATION_MESSAGE);
} }
void checkParsedParameters(MultiTermVectorsRequest request) { void checkParsedParameters(MultiTermVectorsRequest request) {
@ -294,7 +342,6 @@ public class TermVectorsUnitTests extends OpenSearchTestCase {
fields.add("c"); fields.add("c");
for (TermVectorsRequest singleRequest : request.requests) { for (TermVectorsRequest singleRequest : request.requests) {
assertThat(singleRequest.index(), equalTo("testidx")); assertThat(singleRequest.index(), equalTo("testidx"));
assertThat(singleRequest.type(), equalTo("test"));
assertThat(singleRequest.payloads(), equalTo(false)); assertThat(singleRequest.payloads(), equalTo(false));
assertThat(singleRequest.positions(), equalTo(false)); assertThat(singleRequest.positions(), equalTo(false));
assertThat(singleRequest.offsets(), equalTo(false)); assertThat(singleRequest.offsets(), equalTo(false));
@ -313,14 +360,12 @@ public class TermVectorsUnitTests extends OpenSearchTestCase {
request.add(new TermVectorsRequest(), data); request.add(new TermVectorsRequest(), data);
checkParsedFilterParameters(request); checkParsedFilterParameters(request);
assertWarnings(RestTermVectorsAction.TYPES_DEPRECATION_MESSAGE);
} }
void checkParsedFilterParameters(MultiTermVectorsRequest multiRequest) { void checkParsedFilterParameters(MultiTermVectorsRequest multiRequest) {
Set<String> ids = new HashSet<>(Arrays.asList("1", "2")); Set<String> ids = new HashSet<>(Arrays.asList("1", "2"));
for (TermVectorsRequest request : multiRequest.requests) { for (TermVectorsRequest request : multiRequest.requests) {
assertThat(request.index(), equalTo("testidx")); assertThat(request.index(), equalTo("testidx"));
assertThat(request.type(), equalTo("test"));
assertTrue(ids.remove(request.id())); assertTrue(ids.remove(request.id()));
assertNotNull(request.filterSettings()); assertNotNull(request.filterSettings());
assertThat(request.filterSettings().maxNumTerms, equalTo(20)); assertThat(request.filterSettings().maxNumTerms, equalTo(20));

View File

@ -230,8 +230,8 @@ public class TransportMultiTermVectorsActionTests extends OpenSearchTestCase {
final Task task = createTask(); final Task task = createTask();
final NodeClient client = new NodeClient(Settings.EMPTY, threadPool); final NodeClient client = new NodeClient(Settings.EMPTY, threadPool);
final MultiTermVectorsRequestBuilder request = new MultiTermVectorsRequestBuilder(client, MultiTermVectorsAction.INSTANCE); final MultiTermVectorsRequestBuilder request = new MultiTermVectorsRequestBuilder(client, MultiTermVectorsAction.INSTANCE);
request.add(new TermVectorsRequest("index1", "_doc", "1")); request.add(new TermVectorsRequest("index1", "1"));
request.add(new TermVectorsRequest("index2", "_doc", "2")); request.add(new TermVectorsRequest("index2", "2"));
final AtomicBoolean shardActionInvoked = new AtomicBoolean(false); final AtomicBoolean shardActionInvoked = new AtomicBoolean(false);
transportAction = new TransportMultiTermVectorsAction( transportAction = new TransportMultiTermVectorsAction(
@ -262,8 +262,8 @@ public class TransportMultiTermVectorsActionTests extends OpenSearchTestCase {
final Task task = createTask(); final Task task = createTask();
final NodeClient client = new NodeClient(Settings.EMPTY, threadPool); final NodeClient client = new NodeClient(Settings.EMPTY, threadPool);
final MultiTermVectorsRequestBuilder request = new MultiTermVectorsRequestBuilder(client, MultiTermVectorsAction.INSTANCE); final MultiTermVectorsRequestBuilder request = new MultiTermVectorsRequestBuilder(client, MultiTermVectorsAction.INSTANCE);
request.add(new TermVectorsRequest("index2", "_doc", "1").routing("1")); request.add(new TermVectorsRequest("index2", "1").routing("1"));
request.add(new TermVectorsRequest("index2", "_doc", "2")); request.add(new TermVectorsRequest("index2", "2"));
final AtomicBoolean shardActionInvoked = new AtomicBoolean(false); final AtomicBoolean shardActionInvoked = new AtomicBoolean(false);
transportAction = new TransportMultiTermVectorsAction( transportAction = new TransportMultiTermVectorsAction(

View File

@ -112,14 +112,7 @@ public class MoreLikeThisQueryBuilderTests extends AbstractQueryTestCase<MoreLik
private Item generateRandomItem() { private Item generateRandomItem() {
String index = randomBoolean() ? getIndex().getName() : null; String index = randomBoolean() ? getIndex().getName() : null;
// indexed item or artificial document // indexed item or artificial document
Item item; Item item = randomBoolean() ? new Item(index, randomAlphaOfLength(10)) : new Item(index, randomArtificialDoc());
if (randomBoolean()) {
item = randomBoolean() ? new Item(index, randomAlphaOfLength(10)) : new Item(index, randomArtificialDoc());
} else {
String type = "doc";
item = randomBoolean() ? new Item(index, type, randomAlphaOfLength(10)) : new Item(index, type, randomArtificialDoc());
}
// if no field is specified MLT uses all mapped fields for this item // if no field is specified MLT uses all mapped fields for this item
if (randomBoolean()) { if (randomBoolean()) {
@ -247,7 +240,7 @@ public class MoreLikeThisQueryBuilderTests extends AbstractQueryTestCase<MoreLik
MultiTermVectorsItemResponse[] responses = new MultiTermVectorsItemResponse[mtvRequest.size()]; MultiTermVectorsItemResponse[] responses = new MultiTermVectorsItemResponse[mtvRequest.size()];
int i = 0; int i = 0;
for (TermVectorsRequest request : mtvRequest) { for (TermVectorsRequest request : mtvRequest) {
TermVectorsResponse response = new TermVectorsResponse(request.index(), request.type(), request.id()); TermVectorsResponse response = new TermVectorsResponse(request.index(), request.id());
response.setExists(true); response.setExists(true);
Fields generatedFields; Fields generatedFields;
if (request.doc() != null) { if (request.doc() != null) {
@ -449,11 +442,9 @@ public class MoreLikeThisQueryBuilderTests extends AbstractQueryTestCase<MoreLik
+ " \"fields\" : [ \"title\", \"description\" ],\n" + " \"fields\" : [ \"title\", \"description\" ],\n"
+ " \"like\" : [ \"and potentially some more text here as well\", {\n" + " \"like\" : [ \"and potentially some more text here as well\", {\n"
+ " \"_index\" : \"imdb\",\n" + " \"_index\" : \"imdb\",\n"
+ " \"_type\" : \"movies\",\n"
+ " \"_id\" : \"1\"\n" + " \"_id\" : \"1\"\n"
+ " }, {\n" + " }, {\n"
+ " \"_index\" : \"imdb\",\n" + " \"_index\" : \"imdb\",\n"
+ " \"_type\" : \"movies\",\n"
+ " \"_id\" : \"2\"\n" + " \"_id\" : \"2\"\n"
+ " } ],\n" + " } ],\n"
+ " \"max_query_terms\" : 12,\n" + " \"max_query_terms\" : 12,\n"
@ -481,12 +472,6 @@ public class MoreLikeThisQueryBuilderTests extends AbstractQueryTestCase<MoreLik
protected QueryBuilder parseQuery(XContentParser parser) throws IOException { protected QueryBuilder parseQuery(XContentParser parser) throws IOException {
QueryBuilder query = super.parseQuery(parser); QueryBuilder query = super.parseQuery(parser);
assertThat(query, instanceOf(MoreLikeThisQueryBuilder.class)); assertThat(query, instanceOf(MoreLikeThisQueryBuilder.class));
MoreLikeThisQueryBuilder mltQuery = (MoreLikeThisQueryBuilder) query;
if (mltQuery.isTypeless() == false && !assertedWarnings.contains(MoreLikeThisQueryBuilder.TYPES_DEPRECATION_MESSAGE)) {
assertWarnings(MoreLikeThisQueryBuilder.TYPES_DEPRECATION_MESSAGE);
assertedWarnings.add(MoreLikeThisQueryBuilder.TYPES_DEPRECATION_MESSAGE);
}
return query; return query;
} }

View File

@ -81,7 +81,7 @@ public class TermVectorsServiceTests extends OpenSearchSingleNodeTestCase {
List<Long> longs = Stream.of(abs(randomLong()), abs(randomLong())).sorted().collect(toList()); List<Long> longs = Stream.of(abs(randomLong()), abs(randomLong())).sorted().collect(toList());
TermVectorsRequest request = new TermVectorsRequest("test", "type1", "0"); TermVectorsRequest request = new TermVectorsRequest("test", "0");
TermVectorsResponse response = TermVectorsService.getTermVectors(shard, request, longs.iterator()::next); TermVectorsResponse response = TermVectorsService.getTermVectors(shard, request, longs.iterator()::next);
assertThat(response, notNullValue()); assertThat(response, notNullValue());
@ -112,7 +112,7 @@ public class TermVectorsServiceTests extends OpenSearchSingleNodeTestCase {
} }
bulk.get(); bulk.get();
TermVectorsRequest request = new TermVectorsRequest("test", "_doc", "0").termStatistics(true); TermVectorsRequest request = new TermVectorsRequest("test", "0").termStatistics(true);
IndicesService indicesService = getInstanceFromNode(IndicesService.class); IndicesService indicesService = getInstanceFromNode(IndicesService.class);
IndexService test = indicesService.indexService(resolveIndex("test")); IndexService test = indicesService.indexService(resolveIndex("test"));
@ -153,7 +153,7 @@ public class TermVectorsServiceTests extends OpenSearchSingleNodeTestCase {
} }
bulk.get(); bulk.get();
TermVectorsRequest request = new TermVectorsRequest("test", "_doc", "0").termStatistics(true); TermVectorsRequest request = new TermVectorsRequest("test", "0").termStatistics(true);
IndicesService indicesService = getInstanceFromNode(IndicesService.class); IndicesService indicesService = getInstanceFromNode(IndicesService.class);
IndexService test = indicesService.indexService(resolveIndex("test")); IndexService test = indicesService.indexService(resolveIndex("test"));

View File

@ -1,106 +0,0 @@
/*
* SPDX-License-Identifier: Apache-2.0
*
* The OpenSearch Contributors require contributions made to
* this file be licensed under the Apache-2.0 license or a
* compatible open source license.
*/
/*
* Licensed to Elasticsearch under one or more contributor
* license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright
* ownership. Elasticsearch licenses this file to you under
* the Apache License, Version 2.0 (the "License"); you may
* not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
/*
* Modifications Copyright OpenSearch Contributors. See
* GitHub history for details.
*/
package org.opensearch.rest.action.document;
import org.opensearch.common.bytes.BytesReference;
import org.opensearch.common.xcontent.XContentBuilder;
import org.opensearch.common.xcontent.XContentFactory;
import org.opensearch.common.xcontent.XContentType;
import org.opensearch.rest.RestRequest;
import org.opensearch.rest.RestRequest.Method;
import org.opensearch.test.rest.FakeRestRequest;
import org.opensearch.test.rest.RestActionTestCase;
import org.junit.Before;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
public class RestMultiTermVectorsActionTests extends RestActionTestCase {
@Before
public void setUpAction() {
controller().registerHandler(new RestMultiTermVectorsAction());
}
public void testTypeInPath() {
RestRequest request = new FakeRestRequest.Builder(xContentRegistry()).withMethod(Method.POST)
.withPath("/some_index/some_type/_mtermvectors")
.build();
// We're not actually testing anything to do with the client, but need to set this so it doesn't fail the test for being unset.
verifyingClient.setExecuteVerifier((arg1, arg2) -> null);
dispatchRequest(request);
assertWarnings(RestMultiTermVectorsAction.TYPES_DEPRECATION_MESSAGE);
}
public void testTypeParameter() {
Map<String, String> params = new HashMap<>();
params.put("type", "some_type");
RestRequest request = new FakeRestRequest.Builder(xContentRegistry()).withMethod(Method.GET)
.withPath("/some_index/_mtermvectors")
.withParams(params)
.build();
// We're not actually testing anything to do with the client, but need to set this so it doesn't fail the test for being unset.
verifyingClient.setExecuteVerifier((arg1, arg2) -> null);
dispatchRequest(request);
assertWarnings(RestMultiTermVectorsAction.TYPES_DEPRECATION_MESSAGE);
}
public void testTypeInBody() throws IOException {
XContentBuilder content = XContentFactory.jsonBuilder()
.startObject()
.startArray("docs")
.startObject()
.field("_type", "some_type")
.field("_id", 1)
.endObject()
.endArray()
.endObject();
RestRequest request = new FakeRestRequest.Builder(xContentRegistry()).withMethod(Method.GET)
.withPath("/some_index/_mtermvectors")
.withContent(BytesReference.bytes(content), XContentType.JSON)
.build();
// We're not actually testing anything to do with the client, but need to set this so it doesn't fail the test for being unset.
verifyingClient.setExecuteVerifier((arg1, arg2) -> null);
dispatchRequest(request);
assertWarnings(RestTermVectorsAction.TYPES_DEPRECATION_MESSAGE);
}
}

View File

@ -1,80 +0,0 @@
/*
* SPDX-License-Identifier: Apache-2.0
*
* The OpenSearch Contributors require contributions made to
* this file be licensed under the Apache-2.0 license or a
* compatible open source license.
*/
/*
* Licensed to Elasticsearch under one or more contributor
* license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright
* ownership. Elasticsearch licenses this file to you under
* the Apache License, Version 2.0 (the "License"); you may
* not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
/*
* Modifications Copyright OpenSearch Contributors. See
* GitHub history for details.
*/
package org.opensearch.rest.action.document;
import org.opensearch.common.bytes.BytesReference;
import org.opensearch.common.xcontent.XContentBuilder;
import org.opensearch.common.xcontent.XContentFactory;
import org.opensearch.common.xcontent.XContentType;
import org.opensearch.rest.RestRequest;
import org.opensearch.rest.RestRequest.Method;
import org.opensearch.test.rest.FakeRestRequest;
import org.opensearch.test.rest.RestActionTestCase;
import org.junit.Before;
import java.io.IOException;
public class RestTermVectorsActionTests extends RestActionTestCase {
@Before
public void setUpAction() {
controller().registerHandler(new RestTermVectorsAction());
}
public void testTypeInPath() {
RestRequest request = new FakeRestRequest.Builder(xContentRegistry()).withMethod(Method.POST)
.withPath("/some_index/some_type/some_id/_termvectors")
.build();
// We're not actually testing anything to do with the client, but need to set this so it doesn't fail the test for being unset.
verifyingClient.setExecuteVerifier((arg1, arg2) -> null);
dispatchRequest(request);
assertWarnings(RestTermVectorsAction.TYPES_DEPRECATION_MESSAGE);
}
public void testTypeInBody() throws IOException {
XContentBuilder content = XContentFactory.jsonBuilder().startObject().field("_type", "some_type").field("_id", 1).endObject();
RestRequest request = new FakeRestRequest.Builder(xContentRegistry()).withMethod(Method.GET)
.withPath("/some_index/_termvectors/some_id")
.withContent(BytesReference.bytes(content), XContentType.JSON)
.build();
// We're not actually testing anything to do with the client, but need to set this so it doesn't fail the test for being unset.
verifyingClient.setExecuteVerifier((arg1, arg2) -> null);
dispatchRequest(request);
assertWarnings(RestTermVectorsAction.TYPES_DEPRECATION_MESSAGE);
}
}

View File

@ -7,7 +7,6 @@
"offsets":false, "offsets":false,
"positions":false, "positions":false,
"fields":["a","b","c"], "fields":["a","b","c"],
"_index": "testidx", "_index": "testidx"
"_type":"test"
} }
} }

View File

@ -8,8 +8,7 @@
"offsets": false, "offsets": false,
"positions": false, "positions": false,
"fields":["a","b","c"], "fields":["a","b","c"],
"_index": "testidx", "_index": "testidx"
"_type": "test"
}, },
{ {
"_id": "2", "_id": "2",
@ -19,8 +18,7 @@
"offsets": false, "offsets": false,
"positions": false, "positions": false,
"fields":["a","b","c"], "fields":["a","b","c"],
"_index": "testidx", "_index": "testidx"
"_type": "test"
} }
] ]
} }

View File

@ -2,7 +2,6 @@
"ids": ["1","2"], "ids": ["1","2"],
"parameters": { "parameters": {
"_index": "testidx", "_index": "testidx",
"_type": "test",
"filter": { "filter": {
"max_num_terms": 20, "max_num_terms": 20,
"min_term_freq": 1, "min_term_freq": 1,