[Remove] type support from Bulk API (#2215)

Removes all support for type parameter from the Bulk API.

Signed-off-by: Nicholas Walter Knize <nknize@apache.org>
This commit is contained in:
Nick Knize 2022-02-23 11:53:27 -06:00 committed by GitHub
parent 44441d8fc5
commit 1b571ece28
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
65 changed files with 228 additions and 1002 deletions

View File

@ -97,7 +97,6 @@ public class RestNoopBulkAction extends BaseRestHandler {
bulkRequest.add(
request.requiredContent(),
defaultIndex,
defaultType,
defaultRouting,
null,
defaultPipeline,

View File

@ -49,11 +49,8 @@ import org.opensearch.common.unit.ByteSizeValue;
import org.opensearch.common.unit.TimeValue;
import org.opensearch.common.xcontent.XContentBuilder;
import org.opensearch.common.xcontent.XContentType;
import org.opensearch.index.mapper.MapperService;
import org.opensearch.rest.action.document.RestBulkAction;
import org.opensearch.search.SearchHit;
import org.hamcrest.Matcher;
import org.hamcrest.Matchers;
import java.io.IOException;
import java.util.Arrays;
@ -69,9 +66,7 @@ import java.util.stream.IntStream;
import static org.opensearch.common.xcontent.XContentFactory.jsonBuilder;
import static org.opensearch.test.hamcrest.OpenSearchAssertions.fieldFromSource;
import static org.opensearch.test.hamcrest.OpenSearchAssertions.hasId;
import static org.opensearch.test.hamcrest.OpenSearchAssertions.hasIndex;
import static org.opensearch.test.hamcrest.OpenSearchAssertions.hasProperty;
import static org.opensearch.test.hamcrest.OpenSearchAssertions.hasType;
import static org.hamcrest.Matchers.both;
import static org.hamcrest.Matchers.containsInAnyOrder;
import static org.hamcrest.Matchers.either;
@ -96,17 +91,6 @@ public class BulkProcessorIT extends OpenSearchRestHighLevelClientTestCase {
);
}
private static BulkProcessor.Builder initBulkProcessorBuilderUsingTypes(BulkProcessor.Listener listener) {
return BulkProcessor.builder(
(request, bulkListener) -> highLevelClient().bulkAsync(
request,
expectWarningsOnce(RestBulkAction.TYPES_DEPRECATION_MESSAGE),
bulkListener
),
listener
);
}
public void testThatBulkProcessorCountIsCorrect() throws Exception {
final CountDownLatch latch = new CountDownLatch(1);
BulkProcessorTestListener listener = new BulkProcessorTestListener(latch);
@ -210,7 +194,6 @@ public class BulkProcessorIT extends OpenSearchRestHighLevelClientTestCase {
for (BulkItemResponse bulkItemResponse : listener.bulkItems) {
assertThat(bulkItemResponse.getFailureMessage(), bulkItemResponse.isFailed(), equalTo(false));
assertThat(bulkItemResponse.getIndex(), equalTo("test"));
assertThat(bulkItemResponse.getType(), equalTo("_doc"));
// with concurrent requests > 1 we can't rely on the order of the bulk requests
assertThat(Integer.valueOf(bulkItemResponse.getId()), both(greaterThan(0)).and(lessThanOrEqualTo(numDocs)));
// we do want to check that we don't get duplicate ids back
@ -317,7 +300,6 @@ public class BulkProcessorIT extends OpenSearchRestHighLevelClientTestCase {
Set<String> readOnlyIds = new HashSet<>();
for (BulkItemResponse bulkItemResponse : listener.bulkItems) {
assertThat(bulkItemResponse.getIndex(), either(equalTo("test")).or(equalTo("test-ro")));
assertThat(bulkItemResponse.getType(), equalTo("_doc"));
if (bulkItemResponse.getIndex().equals("test")) {
assertThat(bulkItemResponse.isFailed(), equalTo(false));
// with concurrent requests > 1 we can't rely on the order of the bulk requests
@ -346,7 +328,6 @@ public class BulkProcessorIT extends OpenSearchRestHighLevelClientTestCase {
// tag::bulk-processor-mix-parameters
try (BulkProcessor processor = initBulkProcessorBuilder(listener)
.setGlobalIndex("tweets")
.setGlobalType("_doc")
.setGlobalRouting("routing")
.setGlobalPipeline("pipeline_id")
.build()) {
@ -373,87 +354,13 @@ public class BulkProcessorIT extends OpenSearchRestHighLevelClientTestCase {
createIndexWithMultipleShards("test");
createFieldAddingPipleine("pipeline_id", "fieldNameXYZ", "valueXYZ");
final String customType = "testType";
final String ignoredType = "ignoredType";
int numDocs = randomIntBetween(10, 10);
{
final CountDownLatch latch = new CountDownLatch(1);
BulkProcessorTestListener listener = new BulkProcessorTestListener(latch);
// Check that untyped document additions inherit the global type
String globalType = customType;
String localType = null;
try (
BulkProcessor processor = initBulkProcessorBuilderUsingTypes(listener)
// let's make sure that the bulk action limit trips, one single execution will index all the documents
.setConcurrentRequests(randomIntBetween(0, 1))
.setBulkActions(numDocs)
.setFlushInterval(TimeValue.timeValueHours(24))
.setBulkSize(new ByteSizeValue(1, ByteSizeUnit.GB))
.setGlobalIndex("test")
.setGlobalType(globalType)
.setGlobalRouting("routing")
.setGlobalPipeline("pipeline_id")
.build()
) {
indexDocs(processor, numDocs, null, localType, "test", globalType, "pipeline_id");
latch.await();
assertThat(listener.beforeCounts.get(), equalTo(1));
assertThat(listener.afterCounts.get(), equalTo(1));
assertThat(listener.bulkFailures.size(), equalTo(0));
assertResponseItems(listener.bulkItems, numDocs, globalType);
Iterable<SearchHit> hits = searchAll(new SearchRequest("test").routing("routing"));
assertThat(hits, everyItem(hasProperty(fieldFromSource("fieldNameXYZ"), equalTo("valueXYZ"))));
assertThat(hits, everyItem(Matchers.allOf(hasIndex("test"), hasType(globalType))));
assertThat(hits, containsInAnyOrder(expectedIds(numDocs)));
}
}
{
// Check that typed document additions don't inherit the global type
String globalType = ignoredType;
String localType = customType;
final CountDownLatch latch = new CountDownLatch(1);
BulkProcessorTestListener listener = new BulkProcessorTestListener(latch);
try (
BulkProcessor processor = initBulkProcessorBuilderUsingTypes(listener)
// let's make sure that the bulk action limit trips, one single execution will index all the documents
.setConcurrentRequests(randomIntBetween(0, 1))
.setBulkActions(numDocs)
.setFlushInterval(TimeValue.timeValueHours(24))
.setBulkSize(new ByteSizeValue(1, ByteSizeUnit.GB))
.setGlobalIndex("test")
.setGlobalType(globalType)
.setGlobalRouting("routing")
.setGlobalPipeline("pipeline_id")
.build()
) {
indexDocs(processor, numDocs, null, localType, "test", globalType, "pipeline_id");
latch.await();
assertThat(listener.beforeCounts.get(), equalTo(1));
assertThat(listener.afterCounts.get(), equalTo(1));
assertThat(listener.bulkFailures.size(), equalTo(0));
assertResponseItems(listener.bulkItems, numDocs, localType);
Iterable<SearchHit> hits = searchAll(new SearchRequest("test").routing("routing"));
assertThat(hits, everyItem(hasProperty(fieldFromSource("fieldNameXYZ"), equalTo("valueXYZ"))));
assertThat(hits, everyItem(Matchers.allOf(hasIndex("test"), hasType(localType))));
assertThat(hits, containsInAnyOrder(expectedIds(numDocs)));
}
}
{
// Check that untyped document additions and untyped global inherit the established custom type
// (the custom document type introduced to the mapping by the earlier code in this test)
String globalType = null;
String localType = null;
final CountDownLatch latch = new CountDownLatch(1);
BulkProcessorTestListener listener = new BulkProcessorTestListener(latch);
try (
BulkProcessor processor = initBulkProcessorBuilder(listener)
// let's make sure that the bulk action limit trips, one single execution will index all the documents
@ -462,23 +369,22 @@ public class BulkProcessorIT extends OpenSearchRestHighLevelClientTestCase {
.setFlushInterval(TimeValue.timeValueHours(24))
.setBulkSize(new ByteSizeValue(1, ByteSizeUnit.GB))
.setGlobalIndex("test")
.setGlobalType(globalType)
.setGlobalRouting("routing")
.setGlobalPipeline("pipeline_id")
.build()
) {
indexDocs(processor, numDocs, null, localType, "test", globalType, "pipeline_id");
indexDocs(processor, numDocs, null, localType, "test", "pipeline_id");
latch.await();
assertThat(listener.beforeCounts.get(), equalTo(1));
assertThat(listener.afterCounts.get(), equalTo(1));
assertThat(listener.bulkFailures.size(), equalTo(0));
assertResponseItems(listener.bulkItems, numDocs, MapperService.SINGLE_MAPPING_NAME);
assertResponseItems(listener.bulkItems, numDocs);
Iterable<SearchHit> hits = searchAll(new SearchRequest("test").routing("routing"));
assertThat(hits, everyItem(hasProperty(fieldFromSource("fieldNameXYZ"), equalTo("valueXYZ"))));
assertThat(hits, everyItem(Matchers.allOf(hasIndex("test"), hasType(customType))));
assertThat(hits, containsInAnyOrder(expectedIds(numDocs)));
}
}
@ -495,7 +401,6 @@ public class BulkProcessorIT extends OpenSearchRestHighLevelClientTestCase {
String localIndex,
String localType,
String globalIndex,
String globalType,
String globalPipeline
) throws Exception {
MultiGetRequest multiGetRequest = new MultiGetRequest();
@ -510,7 +415,7 @@ public class BulkProcessorIT extends OpenSearchRestHighLevelClientTestCase {
);
} else {
BytesArray data = bytesBulkRequest(localIndex, localType, i);
processor.add(data, globalIndex, globalType, globalPipeline, XContentType.JSON);
processor.add(data, globalIndex, globalPipeline, XContentType.JSON);
}
multiGetRequest.add(localIndex, Integer.toString(i));
}
@ -538,19 +443,14 @@ public class BulkProcessorIT extends OpenSearchRestHighLevelClientTestCase {
}
private MultiGetRequest indexDocs(BulkProcessor processor, int numDocs) throws Exception {
return indexDocs(processor, numDocs, "test", null, null, null, null);
return indexDocs(processor, numDocs, "test", null, null, null);
}
private static void assertResponseItems(List<BulkItemResponse> bulkItemResponses, int numDocs) {
assertResponseItems(bulkItemResponses, numDocs, MapperService.SINGLE_MAPPING_NAME);
}
private static void assertResponseItems(List<BulkItemResponse> bulkItemResponses, int numDocs, String expectedType) {
assertThat(bulkItemResponses.size(), is(numDocs));
int i = 1;
for (BulkItemResponse bulkItemResponse : bulkItemResponses) {
assertThat(bulkItemResponse.getIndex(), equalTo("test"));
assertThat(bulkItemResponse.getType(), equalTo(expectedType));
assertThat(bulkItemResponse.getId(), equalTo(Integer.toString(i++)));
assertThat(
"item " + i + " failed with cause: " + bulkItemResponse.getFailureMessage(),

View File

@ -37,7 +37,6 @@ import org.opensearch.action.bulk.BulkResponse;
import org.opensearch.action.index.IndexRequest;
import org.opensearch.action.search.SearchRequest;
import org.opensearch.common.xcontent.XContentType;
import org.opensearch.rest.action.document.RestBulkAction;
import org.opensearch.search.SearchHit;
import java.io.IOException;
@ -46,7 +45,6 @@ import java.util.function.Function;
import static org.opensearch.test.hamcrest.OpenSearchAssertions.hasId;
import static org.opensearch.test.hamcrest.OpenSearchAssertions.hasIndex;
import static org.opensearch.test.hamcrest.OpenSearchAssertions.hasProperty;
import static org.opensearch.test.hamcrest.OpenSearchAssertions.hasType;
import static org.hamcrest.Matchers.both;
import static org.hamcrest.Matchers.containsInAnyOrder;
import static org.hamcrest.Matchers.emptyIterable;
@ -117,7 +115,7 @@ public class BulkRequestWithGlobalParametersIT extends OpenSearchRestHighLevelCl
}
public void testGlobalIndex() throws IOException {
BulkRequest request = new BulkRequest("global_index", null);
BulkRequest request = new BulkRequest("global_index");
request.add(new IndexRequest().id("1").source(XContentType.JSON, "field", "bulk1"));
request.add(new IndexRequest().id("2").source(XContentType.JSON, "field", "bulk2"));
@ -129,7 +127,7 @@ public class BulkRequestWithGlobalParametersIT extends OpenSearchRestHighLevelCl
@SuppressWarnings("unchecked")
public void testIndexGlobalAndPerRequest() throws IOException {
BulkRequest request = new BulkRequest("global_index", null);
BulkRequest request = new BulkRequest("global_index");
request.add(new IndexRequest("local_index").id("1").source(XContentType.JSON, "field", "bulk1"));
request.add(
new IndexRequest().id("2") // will take global index
@ -142,31 +140,6 @@ public class BulkRequestWithGlobalParametersIT extends OpenSearchRestHighLevelCl
assertThat(hits, containsInAnyOrder(both(hasId("1")).and(hasIndex("local_index")), both(hasId("2")).and(hasIndex("global_index"))));
}
public void testGlobalType() throws IOException {
BulkRequest request = new BulkRequest(null, "global_type");
request.add(new IndexRequest("index").id("1").source(XContentType.JSON, "field", "bulk1"));
request.add(new IndexRequest("index").id("2").source(XContentType.JSON, "field", "bulk2"));
bulkWithTypes(request);
Iterable<SearchHit> hits = searchAll("index");
assertThat(hits, everyItem(hasType("global_type")));
}
public void testTypeGlobalAndPerRequest() throws IOException {
BulkRequest request = new BulkRequest(null, "global_type");
request.add(new IndexRequest("index1", "local_type", "1").source(XContentType.JSON, "field", "bulk1"));
request.add(
new IndexRequest("index2").id("2") // will take global type
.source(XContentType.JSON, "field", "bulk2")
);
bulkWithTypes(request);
Iterable<SearchHit> hits = searchAll("index1", "index2");
assertThat(hits, containsInAnyOrder(both(hasId("1")).and(hasType("local_type")), both(hasId("2")).and(hasType("global_type"))));
}
public void testGlobalRouting() throws IOException {
createIndexWithMultipleShards("index");
BulkRequest request = new BulkRequest((String) null);
@ -194,28 +167,6 @@ public class BulkRequestWithGlobalParametersIT extends OpenSearchRestHighLevelCl
assertThat(hits, containsInAnyOrder(hasId("1"), hasId("2")));
}
public void testGlobalIndexNoTypes() throws IOException {
BulkRequest request = new BulkRequest("global_index");
request.add(new IndexRequest().id("1").source(XContentType.JSON, "field", "bulk1"));
request.add(new IndexRequest().id("2").source(XContentType.JSON, "field", "bulk2"));
bulk(request);
Iterable<SearchHit> hits = searchAll("global_index");
assertThat(hits, everyItem(hasIndex("global_index")));
}
private BulkResponse bulkWithTypes(BulkRequest request) throws IOException {
BulkResponse bulkResponse = execute(
request,
highLevelClient()::bulk,
highLevelClient()::bulkAsync,
expectWarningsOnce(RestBulkAction.TYPES_DEPRECATION_MESSAGE)
);
assertFalse(bulkResponse.hasFailures());
return bulkResponse;
}
private BulkResponse bulk(BulkRequest request) throws IOException {
BulkResponse bulkResponse = execute(request, highLevelClient()::bulk, highLevelClient()::bulkAsync, RequestOptions.DEFAULT);
assertFalse(bulkResponse.hasFailures());

View File

@ -69,7 +69,6 @@ import org.opensearch.common.xcontent.XContentType;
import org.opensearch.index.VersionType;
import org.opensearch.index.get.GetResult;
import org.opensearch.rest.RestStatus;
import org.opensearch.rest.action.document.RestBulkAction;
import org.opensearch.script.Script;
import org.opensearch.script.ScriptType;
import org.opensearch.search.fetch.subphase.FetchSourceContext;
@ -441,10 +440,9 @@ public class CrudIT extends OpenSearchRestHighLevelClientTestCase {
public void testMultiGetWithIds() throws IOException {
BulkRequest bulk = new BulkRequest();
bulk.setRefreshPolicy(RefreshPolicy.IMMEDIATE);
bulk.add(new IndexRequest("index", "type", "id1").source("{\"field\":\"value1\"}", XContentType.JSON));
bulk.add(new IndexRequest("index", "type", "id2").source("{\"field\":\"value2\"}", XContentType.JSON));
bulk.add(new IndexRequest("index", "id1").source("{\"field\":\"value1\"}", XContentType.JSON));
bulk.add(new IndexRequest("index", "id2").source("{\"field\":\"value2\"}", XContentType.JSON));
highLevelClient().bulk(bulk, expectWarningsOnce(RestBulkAction.TYPES_DEPRECATION_MESSAGE));
MultiGetRequest multiGetRequest = new MultiGetRequest();
multiGetRequest.add("index", "id1");
multiGetRequest.add("index", "id2");
@ -1016,7 +1014,6 @@ public class CrudIT extends OpenSearchRestHighLevelClientTestCase {
assertEquals(i, bulkItemResponse.getItemId());
assertEquals("index", bulkItemResponse.getIndex());
assertEquals("_doc", bulkItemResponse.getType());
assertEquals(String.valueOf(i), bulkItemResponse.getId());
DocWriteRequest.OpType requestOpType = bulkRequest.requests().get(i).opType();

View File

@ -25,15 +25,15 @@ setup:
bulk:
refresh: true
body:
- '{"index": {"_index": "test-0", "_type": "_doc"}}'
- '{"index": {"_index": "test-0"}}'
- '{"ip": "10.0.0.1", "integer": 38, "float": 12.5713, "name": "Ruth", "bool": true}'
- '{"index": {"_index": "test-0", "_type": "_doc"}}'
- '{"index": {"_index": "test-0"}}'
- '{"ip": "10.0.0.2", "integer": 42, "float": 15.3393, "name": "Jackie", "surname": "Bowling", "bool": false}'
- '{"index": {"_index": "test-1", "_type": "_doc"}}'
- '{"index": {"_index": "test-1"}}'
- '{"ip": "10.0.0.3", "integer": 29, "float": 19.0517, "name": "Stephanie", "bool": true}'
- '{"index": {"_index": "test-1", "_type": "_doc"}}'
- '{"index": {"_index": "test-1"}}'
- '{"ip": "10.0.0.4", "integer": 19, "float": 19.3717, "surname": "Hamilton", "bool": true}'
- '{"index": {"_index": "test-2", "_type": "_doc"}}'
- '{"index": {"_index": "test-2"}}'
- '{"ip": "10.0.0.5", "integer": 0, "float": 17.3349, "name": "Natalie", "bool": false}'
---

View File

@ -315,7 +315,7 @@ public class AsyncBulkByScrollActionTests extends OpenSearchTestCase {
responses[i] = new BulkItemResponse(
i,
randomFrom(DocWriteRequest.OpType.values()),
new Failure(shardId.getIndexName(), "type", "id" + i, new VersionConflictEngineException(shardId, "id", "test"))
new Failure(shardId.getIndexName(), "id" + i, new VersionConflictEngineException(shardId, "id", "test"))
);
continue;
}
@ -433,7 +433,7 @@ public class AsyncBulkByScrollActionTests extends OpenSearchTestCase {
* Mimicks bulk indexing failures.
*/
public void testBulkFailuresAbortRequest() throws Exception {
Failure failure = new Failure("index", "type", "id", new RuntimeException("test"));
Failure failure = new Failure("index", "id", new RuntimeException("test"));
DummyAsyncBulkByScrollAction action = new DummyAsyncBulkByScrollAction();
BulkResponse bulkResponse = new BulkResponse(
new BulkItemResponse[] { new BulkItemResponse(0, DocWriteRequest.OpType.CREATE, failure) },
@ -982,12 +982,7 @@ public class AsyncBulkByScrollActionTests extends OpenSearchTestCase {
responses[i] = new BulkItemResponse(
i,
item.opType(),
new Failure(
response.getIndex(),
response.getType(),
response.getId(),
new OpenSearchRejectedExecutionException()
)
new Failure(response.getIndex(), response.getId(), new OpenSearchRejectedExecutionException())
);
} else {
responses[i] = new BulkItemResponse(i, item.opType(), response);

View File

@ -80,7 +80,7 @@ public class BulkIndexByScrollResponseTests extends OpenSearchTestCase {
List<BulkItemResponse.Failure> bulkFailures = frequently()
? emptyList()
: IntStream.range(0, between(1, 3))
.mapToObj(j -> new BulkItemResponse.Failure("idx", "type", "id", new Exception()))
.mapToObj(j -> new BulkItemResponse.Failure("idx", "id", new Exception()))
.collect(Collectors.toList());
allBulkFailures.addAll(bulkFailures);
List<SearchFailure> searchFailures = frequently()

View File

@ -123,7 +123,6 @@
- match: {version_conflicts: 1}
- match: {batches: 1}
- match: {failures.0.index: test}
- match: {failures.0.type: _doc}
- match: {failures.0.id: "1"}
- match: {failures.0.status: 409}
- match: {failures.0.cause.type: version_conflict_engine_exception}
@ -176,7 +175,6 @@
- match: {version_conflicts: 1}
- match: {batches: 1}
- match: {failures.0.index: test}
- match: {failures.0.type: _doc}
- match: {failures.0.id: "1"}
- match: {failures.0.status: 409}
- match: {failures.0.cause.type: version_conflict_engine_exception}

View File

@ -104,7 +104,6 @@
- match: {version_conflicts: 1}
- match: {batches: 1}
- match: {failures.0.index: test}
- match: {failures.0.type: _doc}
- match: {failures.0.id: "1"}
- match: {failures.0.status: 409}
- match: {failures.0.cause.type: version_conflict_engine_exception}
@ -144,7 +143,6 @@
- match: {version_conflicts: 1}
- match: {batches: 1}
- match: {failures.0.index: test}
- match: {failures.0.type: _doc}
- match: {failures.0.id: "1"}
- match: {failures.0.status: 409}
- match: {failures.0.cause.type: version_conflict_engine_exception}

View File

@ -94,7 +94,7 @@ public class Netty4HttpRequestSizeLimitIT extends OpenSearchNetty4IntegTestCase
List<Tuple<String, CharSequence>> requests = new ArrayList<>();
for (int i = 0; i < 150; i++) {
requests.add(Tuple.tuple("/index/type/_bulk", bulkRequest));
requests.add(Tuple.tuple("/index/_bulk", bulkRequest));
}
HttpServerTransport httpServerTransport = internalCluster().getInstance(HttpServerTransport.class);

View File

@ -45,17 +45,14 @@ setup:
body:
- index:
_index: docs
_type: doc
_id: 1
- snapshot: one
- index:
_index: docs
_type: doc
_id: 2
- snapshot: one
- index:
_index: docs
_type: doc
_id: 3
- snapshot: one
@ -93,22 +90,18 @@ setup:
body:
- index:
_index: docs
_type: doc
_id: 4
- snapshot: two
- index:
_index: docs
_type: doc
_id: 5
- snapshot: two
- index:
_index: docs
_type: doc
_id: 6
- snapshot: two
- index:
_index: docs
_type: doc
_id: 7
- snapshot: two

View File

@ -48,17 +48,14 @@ setup:
body:
- index:
_index: docs
_type: doc
_id: 1
- snapshot: one
- index:
_index: docs
_type: doc
_id: 2
- snapshot: one
- index:
_index: docs
_type: doc
_id: 3
- snapshot: one
@ -96,22 +93,18 @@ setup:
body:
- index:
_index: docs
_type: doc
_id: 4
- snapshot: two
- index:
_index: docs
_type: doc
_id: 5
- snapshot: two
- index:
_index: docs
_type: doc
_id: 6
- snapshot: two
- index:
_index: docs
_type: doc
_id: 7
- snapshot: two

View File

@ -131,17 +131,14 @@ setup:
body:
- index:
_index: docs
_type: doc
_id: 1
- snapshot: one
- index:
_index: docs
_type: doc
_id: 2
- snapshot: one
- index:
_index: docs
_type: doc
_id: 3
- snapshot: one

View File

@ -50,7 +50,6 @@ import org.opensearch.common.xcontent.json.JsonXContent;
import org.opensearch.common.xcontent.support.XContentMapValues;
import org.opensearch.index.IndexSettings;
import org.opensearch.rest.action.document.RestBulkAction;
import org.opensearch.rest.action.document.RestUpdateAction;
import org.opensearch.rest.action.search.RestExplainAction;
import org.opensearch.test.NotEqualMessageBuilder;
import org.opensearch.test.XContentTestUtils;
@ -99,6 +98,8 @@ public class FullClusterRestartIT extends AbstractFullClusterRestartTestCase {
private String index;
private String type;
public static final String TYPES_DEPRECATION_MESSAGE_BULK = "[types removal]" + " Specifying types in bulk requests is deprecated.";
@Before
public void setIndex() {
index = getTestName().toLowerCase(Locale.ROOT);
@ -490,15 +491,13 @@ public class FullClusterRestartIT extends AbstractFullClusterRestartTestCase {
bulk.append("{\"index\":{}}\n");
bulk.append("{\"test\":\"test\"}\n");
}
Request bulkRequest = new Request("POST", "/" + index + "_write/" + type + "/_bulk");
Request bulkRequest = new Request("POST", "/" + index + "_write/_bulk");
bulkRequest.setJsonEntity(bulk.toString());
bulkRequest.addParameter("refresh", "");
bulkRequest.setOptions(expectWarnings(RestBulkAction.TYPES_DEPRECATION_MESSAGE));
assertThat(EntityUtils.toString(client().performRequest(bulkRequest).getEntity()), containsString("\"errors\":false"));
if (isRunningAgainstOldCluster()) {
Request rolloverRequest = new Request("POST", "/" + index + "_write/_rollover");
rolloverRequest.setOptions(allowTypesRemovalWarnings());
rolloverRequest.setJsonEntity("{"
+ " \"conditions\": {"
+ " \"max_docs\": 5"
@ -864,9 +863,6 @@ public class FullClusterRestartIT extends AbstractFullClusterRestartTestCase {
}
templateBuilder.endObject();
templateBuilder.startObject("mappings"); {
if (isRunningAgainstAncientCluster()) {
templateBuilder.startObject(type);
}
{
templateBuilder.startObject("_source");
{
@ -874,9 +870,6 @@ public class FullClusterRestartIT extends AbstractFullClusterRestartTestCase {
}
templateBuilder.endObject();
}
if (isRunningAgainstAncientCluster()) {
templateBuilder.endObject();
}
}
templateBuilder.endObject();
templateBuilder.startObject("aliases"); {
@ -895,7 +888,6 @@ public class FullClusterRestartIT extends AbstractFullClusterRestartTestCase {
templateBuilder.endObject().endObject();
Request createTemplateRequest = new Request("PUT", "/_template/test_template");
createTemplateRequest.setJsonEntity(Strings.toString(templateBuilder));
createTemplateRequest.setOptions(allowTypesRemovalWarnings());
client().performRequest(createTemplateRequest);
@ -1144,10 +1136,9 @@ public class FullClusterRestartIT extends AbstractFullClusterRestartTestCase {
bulk.append("{\"index\":{\"_id\":\"").append(count + i).append("\"}}\n");
bulk.append("{\"test\":\"test\"}\n");
}
Request writeToRestoredRequest = new Request("POST", "/restored_" + index + "/" + type + "/_bulk");
Request writeToRestoredRequest = new Request("POST", "/restored_" + index + "/_bulk");
writeToRestoredRequest.addParameter("refresh", "true");
writeToRestoredRequest.setJsonEntity(bulk.toString());
writeToRestoredRequest.setOptions(expectWarnings(RestBulkAction.TYPES_DEPRECATION_MESSAGE));
assertThat(EntityUtils.toString(client().performRequest(writeToRestoredRequest).getEntity()), containsString("\"errors\":false"));
// And count to make sure the add worked
@ -1155,7 +1146,7 @@ public class FullClusterRestartIT extends AbstractFullClusterRestartTestCase {
Request countAfterWriteRequest = new Request("GET", "/restored_" + index + "/_search");
countAfterWriteRequest.addParameter("size", "0");
Map<String, Object> countAfterResponse = entityAsMap(client().performRequest(countRequest));
assertTotalHits(count+extras, countAfterResponse);
assertTotalHits(count + extras, countAfterResponse);
// Clean up the index for the next iteration
client().performRequest(new Request("DELETE", "/restored_*"));
@ -1165,24 +1156,17 @@ public class FullClusterRestartIT extends AbstractFullClusterRestartTestCase {
clusterSettingsRequest.addParameter("flat_settings", "true");
Map<String, Object> clusterSettingsResponse = entityAsMap(client().performRequest(clusterSettingsRequest));
@SuppressWarnings("unchecked") final Map<String, Object> persistentSettings =
(Map<String, Object>)clusterSettingsResponse.get("persistent");
(Map<String, Object>) clusterSettingsResponse.get("persistent");
assertThat(persistentSettings.get("cluster.routing.allocation.exclude.test_attr"), equalTo(getOldClusterVersion().toString()));
// Check that the template was restored successfully
Request getTemplateRequest = new Request("GET", "/_template/test_template");
getTemplateRequest.setOptions(allowTypesRemovalWarnings());
Map<String, Object> getTemplateResponse = entityAsMap(client().performRequest(getTemplateRequest));
Map<String, Object> expectedTemplate = new HashMap<>();
expectedTemplate.put("index_patterns", singletonList("evil_*"));
expectedTemplate.put("settings", singletonMap("index", singletonMap("number_of_shards", "1")));
// We don't have the type in the response starting with 7.0, but we won't have it on old cluster after upgrade
// either so look at the response to figure out the correct assertions
if (isTypeInTemplateResponse(getTemplateResponse)) {
expectedTemplate.put("mappings", singletonMap(type, singletonMap("_source", singletonMap("enabled", true))));
} else {
expectedTemplate.put("mappings", singletonMap("_source", singletonMap("enabled", true)));
}
expectedTemplate.put("mappings", singletonMap("_source", singletonMap("enabled", true)));
expectedTemplate.put("order", 0);
Map<String, Object> aliases = new HashMap<>();
@ -1198,13 +1182,6 @@ public class FullClusterRestartIT extends AbstractFullClusterRestartTestCase {
}
}
@SuppressWarnings("unchecked")
private boolean isTypeInTemplateResponse(Map<String, Object> getTemplateResponse) {
return ( (Map<String, Object>) (
(Map<String, Object>) getTemplateResponse.getOrDefault("test_template", emptyMap())
).get("mappings")).get("_source") == null;
}
// TODO tests for upgrades after shrink. We've had trouble with shrink in the past.
private void indexRandomDocuments(
@ -1217,9 +1194,6 @@ public class FullClusterRestartIT extends AbstractFullClusterRestartTestCase {
for (int i = 0; i < count; i++) {
logger.debug("Indexing document [{}]", i);
Request createDocument = new Request("POST", "/" + index + "/" + type + "/" + i);
if (isRunningAgainstAncientCluster() == false) {
createDocument.setOptions(expectWarnings(RestBulkAction.TYPES_DEPRECATION_MESSAGE));
}
createDocument.setJsonEntity(Strings.toString(docSupplier.apply(i)));
client().performRequest(createDocument);
if (rarely()) {

View File

@ -24,7 +24,7 @@ teardown:
bulk:
refresh: true
body:
- '{"index": {"_index": "single_doc_index", "_type": "test_type"}}'
- '{"index": {"_index": "single_doc_index"}}'
- '{"f1": "local_cluster", "sort_field": 0}'
- do:
search:

View File

@ -205,12 +205,11 @@ public class IndexingIT extends AbstractRollingTestCase {
private void bulk(String index, String valueSuffix, int count) throws IOException {
StringBuilder b = new StringBuilder();
for (int i = 0; i < count; i++) {
b.append("{\"index\": {\"_index\": \"").append(index).append("\", \"_type\": \"_doc\"}}\n");
b.append("{\"index\": {\"_index\": \"").append(index).append("\"}}\n");
b.append("{\"f1\": \"v").append(i).append(valueSuffix).append("\", \"f2\": ").append(i).append("}\n");
}
Request bulk = new Request("POST", "/_bulk");
bulk.addParameter("refresh", "true");
bulk.setOptions(expectWarnings(RestBulkAction.TYPES_DEPRECATION_MESSAGE));
bulk.setJsonEntity(b.toString());
client().performRequest(bulk);
}

View File

@ -54,7 +54,6 @@
"docs": [
{
"_index": "index",
"_type": "type",
"_id": "id",
"_source": {
"foo": "bar"

View File

@ -1,120 +0,0 @@
---
"Array of objects":
- do:
bulk:
refresh: true
body:
- index:
_index: test_index
_type: test_type
_id: test_id
- f1: v1
f2: 42
- index:
_index: test_index
_type: test_type
_id: test_id2
- f1: v2
f2: 47
- do:
count:
index: test_index
- match: {count: 2}
---
"Empty _id":
- do:
bulk:
refresh: true
body:
- index:
_index: test
_type: type
_id: ''
- f: 1
- index:
_index: test
_type: type
_id: id
- f: 2
- index:
_index: test
_type: type
- f: 3
- match: { errors: true }
- match: { items.0.index.status: 400 }
- match: { items.0.index.error.type: illegal_argument_exception }
- match: { items.0.index.error.reason: if _id is specified it must not be empty }
- match: { items.1.index.result: created }
- match: { items.2.index.result: created }
- do:
count:
index: test
- match: { count: 2 }
---
"Empty _id with op_type create":
- skip:
version: " - 7.4.99"
reason: "auto id + op type create only supported since 7.5"
- do:
bulk:
refresh: true
body:
- index:
_index: test
_type: type
_id: ''
- f: 1
- index:
_index: test
_type: type
_id: id
- f: 2
- index:
_index: test
_type: type
- f: 3
- create:
_index: test
_type: type
- f: 4
- index:
_index: test
_type: type
op_type: create
- f: 5
- match: { errors: true }
- match: { items.0.index.status: 400 }
- match: { items.0.index.error.type: illegal_argument_exception }
- match: { items.0.index.error.reason: if _id is specified it must not be empty }
- match: { items.1.index.result: created }
- match: { items.2.index.result: created }
- match: { items.3.create.result: created }
- match: { items.4.create.result: created }
- do:
count:
index: test
- match: { count: 4 }
---
"empty action":
- skip:
features: headers
- do:
catch: /Malformed action\/metadata line \[3\], expected FIELD_NAME but found \[END_OBJECT\]/
headers:
Content-Type: application/json
bulk:
body: |
{"index": {"_index": "test_index", "_type": "test_type", "_id": "test_id"}}
{"f1": "v1", "f2": 42}
{}

View File

@ -1,17 +0,0 @@
---
"List of strings":
- do:
bulk:
refresh: true
body:
- '{"index": {"_index": "test_index", "_type": "test_type", "_id": "test_id"}}'
- '{"f1": "v1", "f2": 42}'
- '{"index": {"_index": "test_index", "_type": "test_type", "_id": "test_id2"}}'
- '{"f1": "v2", "f2": 47}'
- do:
count:
index: test_index
- match: {count: 2}

View File

@ -1,17 +0,0 @@
---
"One big string":
- do:
bulk:
refresh: true
body: |
{"index": {"_index": "test_index", "_type": "test_type", "_id": "test_id"}}
{"f1": "v1", "f2": 42}
{"index": {"_index": "test_index", "_type": "test_type", "_id": "test_id2"}}
{"f1": "v2", "f2": 47}
- do:
count:
index: test_index
- match: {count: 2}

View File

@ -1,48 +0,0 @@
---
"refresh=true immediately makes changes are visible in search":
- do:
bulk:
refresh: true
body: |
{"index": {"_index": "bulk_50_refresh_1", "_type": "test_type", "_id": "bulk_50_refresh_id1"}}
{"f1": "v1", "f2": 42}
{"index": {"_index": "bulk_50_refresh_1", "_type": "test_type", "_id": "bulk_50_refresh_id2"}}
{"f1": "v2", "f2": 47}
- do:
count:
index: bulk_50_refresh_1
- match: {count: 2}
---
"refresh=empty string immediately makes changes are visible in search":
- do:
bulk:
refresh: ""
body: |
{"index": {"_index": "bulk_50_refresh_2", "_type": "test_type", "_id": "bulk_50_refresh_id3"}}
{"f1": "v1", "f2": 42}
{"index": {"_index": "bulk_50_refresh_2", "_type": "test_type", "_id": "bulk_50_refresh_id4"}}
{"f1": "v2", "f2": 47}
- do:
count:
index: bulk_50_refresh_2
- match: {count: 2}
---
"refresh=wait_for waits until changes are visible in search":
- do:
bulk:
refresh: wait_for
body: |
{"index": {"_index": "bulk_50_refresh_3", "_type": "test_type", "_id": "bulk_50_refresh_id5"}}
{"f1": "v1", "f2": 42}
{"index": {"_index": "bulk_50_refresh_3", "_type": "test_type", "_id": "bulk_50_refresh_id6"}}
{"f1": "v2", "f2": 47}
- do:
count:
index: bulk_50_refresh_3
- match: {count: 2}

View File

@ -8,11 +8,11 @@
bulk:
refresh: true
body: |
{"index": {"_index": "test_1", "_type": "_doc", "_id": 1}}
{"index": {"_index": "test_1", "_id": 1}}
{ "foo": "bar" }
{"index": {"_index": "test_2", "_type": "_doc", "_id": 2}}
{"index": {"_index": "test_2", "_id": 2}}
{ "foo": "bar" }
{"index": {"_index": "test_3", "_type": "_doc", "_id": 3}}
{"index": {"_index": "test_3", "_id": 3}}
{ "foo": "bar" }
- do:

View File

@ -1,61 +0,0 @@
---
"Terms Query with No.of terms exceeding index.max_terms_count should FAIL":
- skip:
features: allowed_warnings
- do:
indices.create:
include_type_name: true
index: test_index
body:
settings:
number_of_shards: 1
index.max_terms_count: 2
mappings:
test_type:
properties:
user:
type: keyword
followers:
type: keyword
- do:
bulk:
refresh: true
body:
- '{"index": {"_index": "test_index", "_type": "test_type", "_id": "u1"}}'
- '{"user": "u1", "followers": ["u2", "u3"]}'
- '{"index": {"_index": "test_index", "_type": "test_type", "_id": "u2"}}'
- '{"user": "u2", "followers": ["u1", "u3", "u4"]}'
- '{"index": {"_index": "test_index", "_type": "test_type", "_id": "u3"}}'
- '{"user": "u3", "followers": ["u1"]}'
- '{"index": {"_index": "test_index", "_type": "test_type", "_id": "u4"}}'
- '{"user": "u4", "followers": ["u3"]}'
- do:
search:
rest_total_hits_as_int: true
index: test_index
body: {"query" : {"terms" : {"user" : ["u1", "u2"]}}}
- match: { hits.total: 2 }
- do:
catch: bad_request
search:
rest_total_hits_as_int: true
index: test_index
body: {"query" : {"terms" : {"user" : ["u1", "u2", "u3"]}}}
- do:
allowed_warnings:
- "Deprecated field [type] used, this field is unused and will be removed entirely"
search:
rest_total_hits_as_int: true
index: test_index
body: {"query" : {"terms" : {"user" : {"index" : "test_index", "type" : "test_type", "id" : "u1", "path" : "followers"}}}}
- match: { hits.total: 2 }
- do:
catch: bad_request
search:
rest_total_hits_as_int: true
index: test_index
body: {"query" : {"terms" : {"user" : {"index" : "test_index", "type" : "test_type", "id" : "u2", "path" : "followers"}}}}

View File

@ -88,7 +88,6 @@ public class BulkIntegrationIT extends OpenSearchIntegTestCase {
assertBusy(() -> {
GetMappingsResponse mappingsResponse = client().admin().indices().prepareGetMappings().get();
assertTrue(mappingsResponse.getMappings().containsKey("logstash-2014.03.30"));
assertTrue(mappingsResponse.getMappings().get("logstash-2014.03.30").containsKey("logs"));
});
}
@ -163,7 +162,7 @@ public class BulkIntegrationIT extends OpenSearchIntegTestCase {
{
createSamplePipeline("pipeline");
BulkRequestBuilder bulkBuilder = client().prepareBulk("test", "type1").routing("routing").pipeline("pipeline");
BulkRequestBuilder bulkBuilder = client().prepareBulk("test").routing("routing").pipeline("pipeline");
bulkBuilder.add(bulkAction.getBytes(StandardCharsets.UTF_8), 0, bulkAction.length(), null, XContentType.JSON);
BulkResponse bulkItemResponses = bulkBuilder.get();

View File

@ -40,14 +40,10 @@ import org.opensearch.action.index.IndexRequest;
import org.opensearch.client.Client;
import org.opensearch.client.Requests;
import org.opensearch.cluster.metadata.IndexMetadata;
import org.opensearch.common.Strings;
import org.opensearch.common.bytes.BytesArray;
import org.opensearch.common.settings.Settings;
import org.opensearch.common.unit.ByteSizeUnit;
import org.opensearch.common.unit.ByteSizeValue;
import org.opensearch.common.unit.TimeValue;
import org.opensearch.common.xcontent.XContentType;
import org.opensearch.common.xcontent.json.JsonXContent;
import org.opensearch.test.OpenSearchIntegTestCase;
import java.util.Arrays;
@ -173,7 +169,6 @@ public class BulkProcessorIT extends OpenSearchIntegTestCase {
for (BulkItemResponse bulkItemResponse : listener.bulkItems) {
assertThat(bulkItemResponse.getFailureMessage(), bulkItemResponse.isFailed(), equalTo(false));
assertThat(bulkItemResponse.getIndex(), equalTo("test"));
assertThat(bulkItemResponse.getType(), equalTo("test"));
// with concurrent requests > 1 we can't rely on the order of the bulk requests
assertThat(Integer.valueOf(bulkItemResponse.getId()), both(greaterThan(0)).and(lessThanOrEqualTo(numDocs)));
// we do want to check that we don't get duplicate ids back
@ -280,7 +275,6 @@ public class BulkProcessorIT extends OpenSearchIntegTestCase {
Set<String> readOnlyIds = new HashSet<>();
for (BulkItemResponse bulkItemResponse : listener.bulkItems) {
assertThat(bulkItemResponse.getIndex(), either(equalTo("test")).or(equalTo("test-ro")));
assertThat(bulkItemResponse.getType(), equalTo("test"));
if (bulkItemResponse.getIndex().equals("test")) {
assertThat(bulkItemResponse.isFailed(), equalTo(false));
// with concurrent requests > 1 we can't rely on the order of the bulk requests
@ -302,24 +296,13 @@ public class BulkProcessorIT extends OpenSearchIntegTestCase {
private static MultiGetRequestBuilder indexDocs(Client client, BulkProcessor processor, int numDocs) throws Exception {
MultiGetRequestBuilder multiGetRequestBuilder = client.prepareMultiGet();
for (int i = 1; i <= numDocs; i++) {
if (randomBoolean()) {
processor.add(
new IndexRequest("test", "test", Integer.toString(i)).source(
Requests.INDEX_CONTENT_TYPE,
"field",
randomRealisticUnicodeOfLengthBetween(1, 30)
)
);
} else {
final String source = "{ \"index\":{\"_index\":\"test\",\"_type\":\"test\",\"_id\":\""
+ Integer.toString(i)
+ "\"} }\n"
+ Strings.toString(
JsonXContent.contentBuilder().startObject().field("field", randomRealisticUnicodeOfLengthBetween(1, 30)).endObject()
)
+ "\n";
processor.add(new BytesArray(source), null, null, XContentType.JSON);
}
processor.add(
new IndexRequest("test", "test", Integer.toString(i)).source(
Requests.INDEX_CONTENT_TYPE,
"field",
randomRealisticUnicodeOfLengthBetween(1, 30)
)
);
multiGetRequestBuilder.add("test", Integer.toString(i));
}
return multiGetRequestBuilder;
@ -330,7 +313,6 @@ public class BulkProcessorIT extends OpenSearchIntegTestCase {
int i = 1;
for (BulkItemResponse bulkItemResponse : bulkItemResponses) {
assertThat(bulkItemResponse.getIndex(), equalTo("test"));
assertThat(bulkItemResponse.getType(), equalTo("test"));
assertThat(bulkItemResponse.getId(), equalTo(Integer.toString(i++)));
assertThat(
"item " + i + " failed with cause: " + bulkItemResponse.getFailureMessage(),

View File

@ -228,37 +228,31 @@ public class DocumentActionsIT extends OpenSearchIntegTestCase {
assertThat(bulkResponse.getItems()[0].isFailed(), equalTo(false));
assertThat(bulkResponse.getItems()[0].getOpType(), equalTo(OpType.INDEX));
assertThat(bulkResponse.getItems()[0].getIndex(), equalTo(getConcreteIndexName()));
assertThat(bulkResponse.getItems()[0].getType(), equalTo("type1"));
assertThat(bulkResponse.getItems()[0].getId(), equalTo("1"));
assertThat(bulkResponse.getItems()[1].isFailed(), equalTo(false));
assertThat(bulkResponse.getItems()[1].getOpType(), equalTo(OpType.CREATE));
assertThat(bulkResponse.getItems()[1].getIndex(), equalTo(getConcreteIndexName()));
assertThat(bulkResponse.getItems()[1].getType(), equalTo("type1"));
assertThat(bulkResponse.getItems()[1].getId(), equalTo("2"));
assertThat(bulkResponse.getItems()[2].isFailed(), equalTo(false));
assertThat(bulkResponse.getItems()[2].getOpType(), equalTo(OpType.INDEX));
assertThat(bulkResponse.getItems()[2].getIndex(), equalTo(getConcreteIndexName()));
assertThat(bulkResponse.getItems()[2].getType(), equalTo("type1"));
String generatedId3 = bulkResponse.getItems()[2].getId();
assertThat(bulkResponse.getItems()[3].isFailed(), equalTo(false));
assertThat(bulkResponse.getItems()[3].getOpType(), equalTo(OpType.CREATE));
assertThat(bulkResponse.getItems()[3].getIndex(), equalTo(getConcreteIndexName()));
assertThat(bulkResponse.getItems()[3].getType(), equalTo("type1"));
String generatedId4 = bulkResponse.getItems()[3].getId();
assertThat(bulkResponse.getItems()[4].isFailed(), equalTo(false));
assertThat(bulkResponse.getItems()[4].getOpType(), equalTo(OpType.DELETE));
assertThat(bulkResponse.getItems()[4].getIndex(), equalTo(getConcreteIndexName()));
assertThat(bulkResponse.getItems()[4].getType(), equalTo("type1"));
assertThat(bulkResponse.getItems()[4].getId(), equalTo("1"));
assertThat(bulkResponse.getItems()[5].isFailed(), equalTo(true));
assertThat(bulkResponse.getItems()[5].getOpType(), equalTo(OpType.INDEX));
assertThat(bulkResponse.getItems()[5].getIndex(), equalTo(getConcreteIndexName()));
assertThat(bulkResponse.getItems()[5].getType(), equalTo("type1"));
waitForRelocation(ClusterHealthStatus.GREEN);
RefreshResponse refreshResponse = client().admin().indices().prepareRefresh("test").execute().actionGet();

View File

@ -843,7 +843,6 @@ public class SimpleIndexTemplateIT extends OpenSearchIntegTestCase {
assertThat(response.hasFailures(), is(false));
assertThat(response.getItems()[0].isFailed(), equalTo(false));
assertThat(response.getItems()[0].getIndex(), equalTo("a2"));
assertThat(response.getItems()[0].getType(), equalTo("test"));
assertThat(response.getItems()[0].getId(), equalTo("test"));
assertThat(response.getItems()[0].getVersion(), equalTo(1L));

View File

@ -413,7 +413,7 @@ public class GeoFilterIT extends OpenSearchIntegTestCase {
.endObject();
client().admin().indices().prepareCreate("countries").setSettings(settings).addMapping("country", xContentBuilder).get();
BulkResponse bulk = client().prepareBulk().add(bulkAction, 0, bulkAction.length, null, null, xContentBuilder.contentType()).get();
BulkResponse bulk = client().prepareBulk().add(bulkAction, 0, bulkAction.length, null, xContentBuilder.contentType()).get();
for (BulkItemResponse item : bulk.getItems()) {
assertFalse("unable to index data", item.isFailed());

View File

@ -83,14 +83,6 @@ public interface DocWriteRequest<T> extends IndicesRequest, Accountable {
*/
String type();
/**
* Set the default type supplied to a bulk
* request if this individual request's type is null
* or empty
* @return the Request
*/
T defaultTypeIfNull(String defaultType);
/**
* Get the id of the document for this request
* @return the id

View File

@ -105,13 +105,7 @@ public class BulkItemRequest implements Writeable, Accountable {
*/
public void abort(String index, Exception cause) {
if (primaryResponse == null) {
final BulkItemResponse.Failure failure = new BulkItemResponse.Failure(
index,
request.type(),
request.id(),
Objects.requireNonNull(cause),
true
);
final BulkItemResponse.Failure failure = new BulkItemResponse.Failure(index, request.id(), Objects.requireNonNull(cause), true);
setPrimaryResponse(new BulkItemResponse(id, request.opType(), failure));
} else {
assert primaryResponse.isFailed() && primaryResponse.getFailure().isAborted() : "response ["

View File

@ -35,6 +35,7 @@ package org.opensearch.action.bulk;
import org.opensearch.ExceptionsHelper;
import org.opensearch.LegacyESVersion;
import org.opensearch.OpenSearchException;
import org.opensearch.Version;
import org.opensearch.action.DocWriteRequest.OpType;
import org.opensearch.action.DocWriteResponse;
import org.opensearch.action.delete.DeleteResponse;
@ -51,6 +52,7 @@ import org.opensearch.common.xcontent.StatusToXContentObject;
import org.opensearch.common.xcontent.ToXContentFragment;
import org.opensearch.common.xcontent.XContentBuilder;
import org.opensearch.common.xcontent.XContentParser;
import org.opensearch.index.mapper.MapperService;
import org.opensearch.index.seqno.SequenceNumbers;
import org.opensearch.index.shard.ShardId;
import org.opensearch.rest.RestStatus;
@ -69,7 +71,6 @@ import static org.opensearch.common.xcontent.XContentParserUtils.throwUnknownFie
public class BulkItemResponse implements Writeable, StatusToXContentObject {
private static final String _INDEX = "_index";
private static final String _TYPE = "_type";
private static final String _ID = "_id";
private static final String STATUS = "status";
private static final String ERROR = "error";
@ -88,7 +89,6 @@ public class BulkItemResponse implements Writeable, StatusToXContentObject {
builder.field(STATUS, response.status().getStatus());
} else {
builder.field(_INDEX, failure.getIndex());
builder.field(_TYPE, failure.getType());
builder.field(_ID, failure.getId());
builder.field(STATUS, failure.getStatus().getStatus());
builder.startObject(ERROR);
@ -166,7 +166,7 @@ public class BulkItemResponse implements Writeable, StatusToXContentObject {
BulkItemResponse bulkItemResponse;
if (exception != null) {
Failure failure = new Failure(builder.getShardId().getIndexName(), builder.getType(), builder.getId(), exception, status);
Failure failure = new Failure(builder.getShardId().getIndexName(), builder.getId(), exception, status);
bulkItemResponse = new BulkItemResponse(id, opType, failure);
} else {
bulkItemResponse = new BulkItemResponse(id, opType, builder.build());
@ -179,13 +179,11 @@ public class BulkItemResponse implements Writeable, StatusToXContentObject {
*/
public static class Failure implements Writeable, ToXContentFragment {
public static final String INDEX_FIELD = "index";
public static final String TYPE_FIELD = "type";
public static final String ID_FIELD = "id";
public static final String CAUSE_FIELD = "cause";
public static final String STATUS_FIELD = "status";
private final String index;
private final String type;
private final String id;
private final Exception cause;
private final RestStatus status;
@ -196,11 +194,10 @@ public class BulkItemResponse implements Writeable, StatusToXContentObject {
public static final ConstructingObjectParser<Failure, Void> PARSER = new ConstructingObjectParser<>(
"bulk_failures",
true,
a -> new Failure((String) a[0], (String) a[1], (String) a[2], (Exception) a[3], RestStatus.fromCode((int) a[4]))
a -> new Failure((String) a[0], (String) a[1], (Exception) a[2], RestStatus.fromCode((int) a[3]))
);
static {
PARSER.declareString(constructorArg(), new ParseField(INDEX_FIELD));
PARSER.declareString(constructorArg(), new ParseField(TYPE_FIELD));
PARSER.declareString(optionalConstructorArg(), new ParseField(ID_FIELD));
PARSER.declareObject(constructorArg(), (p, c) -> OpenSearchException.fromXContent(p), new ParseField(CAUSE_FIELD));
PARSER.declareInt(constructorArg(), new ParseField(STATUS_FIELD));
@ -209,13 +206,12 @@ public class BulkItemResponse implements Writeable, StatusToXContentObject {
/**
* For write failures before operation was assigned a sequence number.
*
* use @{link {@link #Failure(String, String, String, Exception, long, long)}}
* use @{link {@link #Failure(String, String, Exception, long, long)}}
* to record operation sequence no with failure
*/
public Failure(String index, String type, String id, Exception cause) {
public Failure(String index, String id, Exception cause) {
this(
index,
type,
id,
cause,
ExceptionsHelper.status(cause),
@ -225,10 +221,9 @@ public class BulkItemResponse implements Writeable, StatusToXContentObject {
);
}
public Failure(String index, String type, String id, Exception cause, boolean aborted) {
public Failure(String index, String id, Exception cause, boolean aborted) {
this(
index,
type,
id,
cause,
ExceptionsHelper.status(cause),
@ -238,18 +233,17 @@ public class BulkItemResponse implements Writeable, StatusToXContentObject {
);
}
public Failure(String index, String type, String id, Exception cause, RestStatus status) {
this(index, type, id, cause, status, SequenceNumbers.UNASSIGNED_SEQ_NO, SequenceNumbers.UNASSIGNED_PRIMARY_TERM, false);
public Failure(String index, String id, Exception cause, RestStatus status) {
this(index, id, cause, status, SequenceNumbers.UNASSIGNED_SEQ_NO, SequenceNumbers.UNASSIGNED_PRIMARY_TERM, false);
}
/** For write failures after operation was assigned a sequence number. */
public Failure(String index, String type, String id, Exception cause, long seqNo, long term) {
this(index, type, id, cause, ExceptionsHelper.status(cause), seqNo, term, false);
public Failure(String index, String id, Exception cause, long seqNo, long term) {
this(index, id, cause, ExceptionsHelper.status(cause), seqNo, term, false);
}
private Failure(String index, String type, String id, Exception cause, RestStatus status, long seqNo, long term, boolean aborted) {
private Failure(String index, String id, Exception cause, RestStatus status, long seqNo, long term, boolean aborted) {
this.index = index;
this.type = type;
this.id = id;
this.cause = cause;
this.status = status;
@ -263,7 +257,11 @@ public class BulkItemResponse implements Writeable, StatusToXContentObject {
*/
public Failure(StreamInput in) throws IOException {
index = in.readString();
type = in.readString();
if (in.getVersion().before(Version.V_2_0_0)) {
in.readString();
// can't make an assertion about type names here because too many tests still set their own
// types bypassing various checks
}
id = in.readOptionalString();
cause = in.readException();
status = ExceptionsHelper.status(cause);
@ -279,7 +277,9 @@ public class BulkItemResponse implements Writeable, StatusToXContentObject {
@Override
public void writeTo(StreamOutput out) throws IOException {
out.writeString(index);
out.writeString(type);
if (out.getVersion().before(Version.V_2_0_0)) {
out.writeString(MapperService.SINGLE_MAPPING_NAME);
}
out.writeOptionalString(id);
out.writeException(cause);
out.writeZLong(seqNo);
@ -296,13 +296,6 @@ public class BulkItemResponse implements Writeable, StatusToXContentObject {
return this.index;
}
/**
* The type of the action.
*/
public String getType() {
return type;
}
/**
* The id of the action.
*/
@ -361,7 +354,6 @@ public class BulkItemResponse implements Writeable, StatusToXContentObject {
@Override
public XContentBuilder toXContent(XContentBuilder builder, Params params) throws IOException {
builder.field(INDEX_FIELD, index);
builder.field(TYPE_FIELD, type);
if (id != null) {
builder.field(ID_FIELD, id);
}
@ -468,16 +460,6 @@ public class BulkItemResponse implements Writeable, StatusToXContentObject {
return response.getIndex();
}
/**
* The type of the action.
*/
public String getType() {
if (failure != null) {
return failure.getType();
}
return response.getType();
}
/**
* The id of the action.
*/

View File

@ -251,7 +251,7 @@ class BulkPrimaryExecutionContext {
docWriteRequest.opType(),
// Make sure to use getCurrentItem().index() here, if you use docWriteRequest.index() it will use the
// concrete index instead of an alias if used!
new BulkItemResponse.Failure(getCurrentItem().index(), docWriteRequest.type(), docWriteRequest.id(), cause)
new BulkItemResponse.Failure(getCurrentItem().index(), docWriteRequest.id(), cause)
);
markAsCompleted(executionResult);
}
@ -304,7 +304,6 @@ class BulkPrimaryExecutionContext {
// concrete index instead of an alias if used!
new BulkItemResponse.Failure(
request.index(),
docWriteRequest.type(),
docWriteRequest.id(),
result.getFailure(),
result.getSeqNo(),

View File

@ -106,7 +106,6 @@ public class BulkProcessor implements Closeable {
private TimeValue flushInterval = null;
private BackoffPolicy backoffPolicy = BackoffPolicy.exponentialBackoff();
private String globalIndex;
private String globalType;
private String globalRouting;
private String globalPipeline;
@ -168,11 +167,6 @@ public class BulkProcessor implements Closeable {
return this;
}
public Builder setGlobalType(String globalType) {
this.globalType = globalType;
return this;
}
public Builder setGlobalRouting(String globalRouting) {
this.globalRouting = globalRouting;
return this;
@ -219,7 +213,7 @@ public class BulkProcessor implements Closeable {
}
private Supplier<BulkRequest> createBulkRequestWithGlobalDefaults() {
return () -> new BulkRequest(globalIndex, globalType).pipeline(globalPipeline).routing(globalRouting);
return () -> new BulkRequest(globalIndex).pipeline(globalPipeline).routing(globalRouting);
}
}
@ -452,9 +446,8 @@ public class BulkProcessor implements Closeable {
/**
* Adds the data from the bytes to be processed by the bulk processor
*/
public BulkProcessor add(BytesReference data, @Nullable String defaultIndex, @Nullable String defaultType, XContentType xContentType)
throws Exception {
return add(data, defaultIndex, defaultType, null, xContentType);
public BulkProcessor add(BytesReference data, @Nullable String defaultIndex, XContentType xContentType) throws Exception {
return add(data, defaultIndex, null, xContentType);
}
/**
@ -463,7 +456,6 @@ public class BulkProcessor implements Closeable {
public BulkProcessor add(
BytesReference data,
@Nullable String defaultIndex,
@Nullable String defaultType,
@Nullable String defaultPipeline,
XContentType xContentType
) throws Exception {
@ -471,7 +463,7 @@ public class BulkProcessor implements Closeable {
lock.lock();
try {
ensureOpen();
bulkRequest.add(data, defaultIndex, defaultType, null, null, defaultPipeline, null, true, xContentType);
bulkRequest.add(data, defaultIndex, null, null, defaultPipeline, null, true, xContentType);
bulkRequestToExecute = newBulkRequestIfNeeded();
} finally {
lock.unlock();

View File

@ -52,7 +52,6 @@ import org.opensearch.common.io.stream.StreamInput;
import org.opensearch.common.io.stream.StreamOutput;
import org.opensearch.common.unit.TimeValue;
import org.opensearch.common.xcontent.XContentType;
import org.opensearch.index.mapper.MapperService;
import org.opensearch.search.fetch.subphase.FetchSourceContext;
import java.io.IOException;
@ -92,7 +91,6 @@ public class BulkRequest extends ActionRequest implements CompositeIndicesReques
private String globalPipeline;
private String globalRouting;
private String globalIndex;
private String globalType;
private Boolean globalRequireAlias;
private long sizeInBytes = 0;
@ -111,15 +109,6 @@ public class BulkRequest extends ActionRequest implements CompositeIndicesReques
this.globalIndex = globalIndex;
}
/**
* @deprecated Types are in the process of being removed. Use {@link #BulkRequest(String)} instead
*/
@Deprecated
public BulkRequest(@Nullable String globalIndex, @Nullable String globalType) {
this.globalIndex = globalIndex;
this.globalType = globalType;
}
/**
* Adds a list of requests to be executed. Either index or delete requests.
*/
@ -246,62 +235,21 @@ public class BulkRequest extends ActionRequest implements CompositeIndicesReques
* Adds a framed data in binary format
*/
public BulkRequest add(byte[] data, int from, int length, XContentType xContentType) throws IOException {
return add(data, from, length, null, null, xContentType);
}
/**
* Adds a framed data in binary format
* @deprecated use {@link #add(byte[], int, int, String, XContentType)} instead
*/
@Deprecated
public BulkRequest add(
byte[] data,
int from,
int length,
@Nullable String defaultIndex,
@Nullable String defaultType,
XContentType xContentType
) throws IOException {
return add(new BytesArray(data, from, length), defaultIndex, defaultType, xContentType);
return add(data, from, length, null, xContentType);
}
/**
* Adds a framed data in binary format
*/
public BulkRequest add(byte[] data, int from, int length, @Nullable String defaultIndex, XContentType xContentType) throws IOException {
return add(new BytesArray(data, from, length), defaultIndex, MapperService.SINGLE_MAPPING_NAME, xContentType);
}
/**
* Adds a framed data in binary format
* @deprecated use {@link #add(BytesReference, String, XContentType)} instead
*/
@Deprecated
public BulkRequest add(BytesReference data, @Nullable String defaultIndex, @Nullable String defaultType, XContentType xContentType)
throws IOException {
return add(data, defaultIndex, defaultType, null, null, null, null, true, xContentType);
return add(new BytesArray(data, from, length), defaultIndex, xContentType);
}
/**
* Adds a framed data in binary format
*/
public BulkRequest add(BytesReference data, @Nullable String defaultIndex, XContentType xContentType) throws IOException {
return add(data, defaultIndex, MapperService.SINGLE_MAPPING_NAME, null, null, null, null, true, xContentType);
}
/**
* Adds a framed data in binary format
* @deprecated use {@link #add(BytesReference, String, boolean, XContentType)} instead
*/
@Deprecated
public BulkRequest add(
BytesReference data,
@Nullable String defaultIndex,
@Nullable String defaultType,
boolean allowExplicitIndex,
XContentType xContentType
) throws IOException {
return add(data, defaultIndex, defaultType, null, null, null, null, allowExplicitIndex, xContentType);
return add(data, defaultIndex, null, null, null, null, true, xContentType);
}
/**
@ -309,7 +257,7 @@ public class BulkRequest extends ActionRequest implements CompositeIndicesReques
*/
public BulkRequest add(BytesReference data, @Nullable String defaultIndex, boolean allowExplicitIndex, XContentType xContentType)
throws IOException {
return add(data, defaultIndex, MapperService.SINGLE_MAPPING_NAME, null, null, null, null, allowExplicitIndex, xContentType);
return add(data, defaultIndex, null, null, null, null, allowExplicitIndex, xContentType);
}
public BulkRequest add(
@ -321,27 +269,12 @@ public class BulkRequest extends ActionRequest implements CompositeIndicesReques
boolean allowExplicitIndex,
XContentType xContentType
) throws IOException {
return add(
data,
defaultIndex,
MapperService.SINGLE_MAPPING_NAME,
defaultRouting,
defaultFetchSourceContext,
defaultPipeline,
null,
allowExplicitIndex,
xContentType
);
return add(data, defaultIndex, defaultRouting, defaultFetchSourceContext, defaultPipeline, null, allowExplicitIndex, xContentType);
}
/**
* @deprecated use {@link #add(BytesReference, String, String, FetchSourceContext, String, boolean, XContentType)} instead
*/
@Deprecated
public BulkRequest add(
BytesReference data,
@Nullable String defaultIndex,
@Nullable String defaultType,
@Nullable String defaultRouting,
@Nullable FetchSourceContext defaultFetchSourceContext,
@Nullable String defaultPipeline,
@ -355,14 +288,13 @@ public class BulkRequest extends ActionRequest implements CompositeIndicesReques
new BulkRequestParser(true).parse(
data,
defaultIndex,
defaultType,
routing,
defaultFetchSourceContext,
pipeline,
requireAlias,
allowExplicitIndex,
xContentType,
this::internalAdd,
(indexRequest, type) -> internalAdd(indexRequest),
this::internalAdd,
this::add
);
@ -526,9 +458,6 @@ public class BulkRequest extends ActionRequest implements CompositeIndicesReques
private void applyGlobalMandatoryParameters(DocWriteRequest<?> request) {
request.index(valueOrDefault(request.index(), globalIndex));
if (Strings.isNullOrEmpty(globalType) == false && MapperService.SINGLE_MAPPING_NAME.equals(globalType) == false) {
request.defaultTypeIfNull(globalType);
}
}
private static String valueOrDefault(String value, String globalDefault) {

View File

@ -46,7 +46,6 @@ import org.opensearch.client.OpenSearchClient;
import org.opensearch.common.Nullable;
import org.opensearch.common.unit.TimeValue;
import org.opensearch.common.xcontent.XContentType;
import org.opensearch.index.mapper.MapperService;
/**
* A bulk request holds an ordered {@link IndexRequest}s and {@link DeleteRequest}s and allows to executes
@ -54,14 +53,6 @@ import org.opensearch.index.mapper.MapperService;
*/
public class BulkRequestBuilder extends ActionRequestBuilder<BulkRequest, BulkResponse> implements WriteRequestBuilder<BulkRequestBuilder> {
/**
* @deprecated use {@link #BulkRequestBuilder(OpenSearchClient, BulkAction, String)} instead
*/
@Deprecated
public BulkRequestBuilder(OpenSearchClient client, BulkAction action, @Nullable String globalIndex, @Nullable String globalType) {
super(client, action, new BulkRequest(globalIndex, globalType));
}
public BulkRequestBuilder(OpenSearchClient client, BulkAction action, @Nullable String globalIndex) {
super(client, action, new BulkRequest(globalIndex));
}
@ -128,29 +119,12 @@ public class BulkRequestBuilder extends ActionRequestBuilder<BulkRequest, BulkRe
return this;
}
/**
* Adds a framed data in binary format
* @deprecated use {@link #add(byte[], int, int, String, XContentType)} instead
*/
@Deprecated
public BulkRequestBuilder add(
byte[] data,
int from,
int length,
@Nullable String defaultIndex,
@Nullable String defaultType,
XContentType xContentType
) throws Exception {
request.add(data, from, length, defaultIndex, defaultType, xContentType);
return this;
}
/**
* Adds a framed data in binary format
*/
public BulkRequestBuilder add(byte[] data, int from, int length, @Nullable String defaultIndex, XContentType xContentType)
throws Exception {
request.add(data, from, length, defaultIndex, MapperService.SINGLE_MAPPING_NAME, xContentType);
request.add(data, from, length, defaultIndex, xContentType);
return this;
}

View File

@ -40,7 +40,6 @@ import org.opensearch.common.Nullable;
import org.opensearch.common.ParseField;
import org.opensearch.common.bytes.BytesArray;
import org.opensearch.common.bytes.BytesReference;
import org.opensearch.common.logging.DeprecationLogger;
import org.opensearch.common.lucene.uid.Versions;
import org.opensearch.common.xcontent.LoggingDeprecationHandler;
import org.opensearch.common.xcontent.NamedXContentRegistry;
@ -49,12 +48,12 @@ import org.opensearch.common.xcontent.XContentParser;
import org.opensearch.common.xcontent.XContentType;
import org.opensearch.index.VersionType;
import org.opensearch.index.seqno.SequenceNumbers;
import org.opensearch.rest.action.document.RestBulkAction;
import org.opensearch.search.fetch.subphase.FetchSourceContext;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import java.util.function.BiConsumer;
import java.util.function.Consumer;
import java.util.function.Function;
@ -65,8 +64,6 @@ import static org.opensearch.index.seqno.SequenceNumbers.UNASSIGNED_PRIMARY_TERM
*/
public final class BulkRequestParser {
private static final DeprecationLogger deprecationLogger = DeprecationLogger.getLogger(BulkRequestParser.class);
private static final ParseField INDEX = new ParseField("_index");
private static final ParseField TYPE = new ParseField("_type");
private static final ParseField ID = new ParseField("_id");
@ -81,14 +78,15 @@ public final class BulkRequestParser {
private static final ParseField IF_PRIMARY_TERM = new ParseField("if_primary_term");
private static final ParseField REQUIRE_ALIAS = new ParseField(DocWriteRequest.REQUIRE_ALIAS);
private final boolean warnOnTypeUsage;
// TODO: Remove this parameter once the BulkMonitoring endpoint has been removed
private final boolean errorOnType;
/**
* Create a new parser.
* @param warnOnTypeUsage whether it warns upon types being explicitly specified
* @param errorOnType whether to allow _type information in the index line; used by BulkMonitoring
*/
public BulkRequestParser(boolean warnOnTypeUsage) {
this.warnOnTypeUsage = warnOnTypeUsage;
public BulkRequestParser(boolean errorOnType) {
this.errorOnType = errorOnType;
}
private static int findNextMarker(byte marker, int from, BytesReference data) {
@ -136,45 +134,7 @@ public final class BulkRequestParser {
@Nullable Boolean defaultRequireAlias,
boolean allowExplicitIndex,
XContentType xContentType,
Consumer<IndexRequest> indexRequestConsumer,
Consumer<UpdateRequest> updateRequestConsumer,
Consumer<DeleteRequest> deleteRequestConsumer
) throws IOException {
parse(
data,
defaultIndex,
null,
defaultRouting,
defaultFetchSourceContext,
defaultPipeline,
defaultRequireAlias,
allowExplicitIndex,
xContentType,
indexRequestConsumer,
updateRequestConsumer,
deleteRequestConsumer
);
}
/**
* Parse the provided {@code data} assuming the provided default values. Index requests
* will be passed to the {@code indexRequestConsumer}, update requests to the
* {@code updateRequestConsumer} and delete requests to the {@code deleteRequestConsumer}.
* @deprecated Use {@link #parse(BytesReference, String, String, FetchSourceContext, String, Boolean, boolean, XContentType,
* Consumer, Consumer, Consumer)} instead.
*/
@Deprecated
public void parse(
BytesReference data,
@Nullable String defaultIndex,
@Nullable String defaultType,
@Nullable String defaultRouting,
@Nullable FetchSourceContext defaultFetchSourceContext,
@Nullable String defaultPipeline,
@Nullable Boolean defaultRequireAlias,
boolean allowExplicitIndex,
XContentType xContentType,
Consumer<IndexRequest> indexRequestConsumer,
BiConsumer<IndexRequest, String> indexRequestConsumer,
Consumer<UpdateRequest> updateRequestConsumer,
Consumer<DeleteRequest> deleteRequestConsumer
) throws IOException {
@ -182,7 +142,6 @@ public final class BulkRequestParser {
int line = 0;
int from = 0;
byte marker = xContent.streamSeparator();
boolean typesDeprecationLogged = false;
// Bulk requests can contain a lot of repeated strings for the index, pipeline and routing parameters. This map is used to
// deduplicate duplicate strings parsed for these parameters. While it does not prevent instantiating the duplicate strings, it
// reduces their lifetime to the lifetime of this parse call instead of the lifetime of the full bulk request.
@ -231,7 +190,7 @@ public final class BulkRequestParser {
String action = parser.currentName();
String index = defaultIndex;
String type = defaultType;
String type = null;
String id = null;
String routing = defaultRouting;
FetchSourceContext fetchSourceContext = defaultFetchSourceContext;
@ -255,14 +214,15 @@ public final class BulkRequestParser {
currentFieldName = parser.currentName();
} else if (token.isValue()) {
if (INDEX.match(currentFieldName, parser.getDeprecationHandler())) {
if (!allowExplicitIndex) {
if (allowExplicitIndex == false) {
throw new IllegalArgumentException("explicit index in bulk is not allowed");
}
index = stringDeduplicator.computeIfAbsent(parser.text(), Function.identity());
} else if (TYPE.match(currentFieldName, parser.getDeprecationHandler())) {
if (warnOnTypeUsage && typesDeprecationLogged == false) {
deprecationLogger.deprecate("bulk_with_types", RestBulkAction.TYPES_DEPRECATION_MESSAGE);
typesDeprecationLogged = true;
if (errorOnType) {
throw new IllegalArgumentException(
"Action/metadata line [" + line + "] contains an unknown parameter [" + currentFieldName + "]"
);
}
type = stringDeduplicator.computeIfAbsent(parser.text(), Function.identity());
} else if (ID.match(currentFieldName, parser.getDeprecationHandler())) {
@ -333,7 +293,8 @@ public final class BulkRequestParser {
if ("delete".equals(action)) {
deleteRequestConsumer.accept(
new DeleteRequest(index, type, id).routing(routing)
new DeleteRequest(index).id(id)
.routing(routing)
.version(version)
.versionType(versionType)
.setIfSeqNo(ifSeqNo)
@ -351,18 +312,21 @@ public final class BulkRequestParser {
if ("index".equals(action)) {
if (opType == null) {
indexRequestConsumer.accept(
new IndexRequest(index, type, id).routing(routing)
new IndexRequest(index).id(id)
.routing(routing)
.version(version)
.versionType(versionType)
.setPipeline(pipeline)
.setIfSeqNo(ifSeqNo)
.setIfPrimaryTerm(ifPrimaryTerm)
.source(sliceTrimmingCarriageReturn(data, from, nextMarker, xContentType), xContentType)
.setRequireAlias(requireAlias)
.setRequireAlias(requireAlias),
type
);
} else {
indexRequestConsumer.accept(
new IndexRequest(index, type, id).routing(routing)
new IndexRequest(index).id(id)
.routing(routing)
.version(version)
.versionType(versionType)
.create("create".equals(opType))
@ -370,12 +334,14 @@ public final class BulkRequestParser {
.setIfSeqNo(ifSeqNo)
.setIfPrimaryTerm(ifPrimaryTerm)
.source(sliceTrimmingCarriageReturn(data, from, nextMarker, xContentType), xContentType)
.setRequireAlias(requireAlias)
.setRequireAlias(requireAlias),
type
);
}
} else if ("create".equals(action)) {
indexRequestConsumer.accept(
new IndexRequest(index, type, id).routing(routing)
new IndexRequest(index).id(id)
.routing(routing)
.version(version)
.versionType(versionType)
.create(true)
@ -383,7 +349,8 @@ public final class BulkRequestParser {
.setIfSeqNo(ifSeqNo)
.setIfPrimaryTerm(ifPrimaryTerm)
.source(sliceTrimmingCarriageReturn(data, from, nextMarker, xContentType), xContentType)
.setRequireAlias(requireAlias)
.setRequireAlias(requireAlias),
type
);
} else if ("update".equals(action)) {
if (version != Versions.MATCH_ANY || versionType != VersionType.INTERNAL) {
@ -391,7 +358,9 @@ public final class BulkRequestParser {
"Update requests do not support versioning. " + "Please use `if_seq_no` and `if_primary_term` instead"
);
}
UpdateRequest updateRequest = new UpdateRequest(index, type, id).routing(routing)
UpdateRequest updateRequest = new UpdateRequest().index(index)
.id(id)
.routing(routing)
.retryOnConflict(retryOnConflict)
.setIfSeqNo(ifSeqNo)
.setIfPrimaryTerm(ifPrimaryTerm)

View File

@ -129,8 +129,6 @@ public class BulkResponse extends ActionResponse implements Iterable<BulkItemRes
.append(i)
.append("]: index [")
.append(response.getIndex())
.append("], type [")
.append(response.getType())
.append("], id [")
.append(response.getId())
.append("], message [")

View File

@ -468,10 +468,7 @@ public class TransportBulkAction extends HandledTransportAction<BulkRequest, Bul
Exception e
) {
if (index.equals(request.index())) {
responses.set(
idx,
new BulkItemResponse(idx, request.opType(), new BulkItemResponse.Failure(request.index(), request.type(), request.id(), e))
);
responses.set(idx, new BulkItemResponse(idx, request.opType(), new BulkItemResponse.Failure(request.index(), request.id(), e)));
return true;
}
return false;
@ -575,12 +572,7 @@ public class TransportBulkAction extends HandledTransportAction<BulkRequest, Bul
throw new AssertionError("request type not supported: [" + docWriteRequest.opType() + "]");
}
} catch (OpenSearchParseException | IllegalArgumentException | RoutingMissingException e) {
BulkItemResponse.Failure failure = new BulkItemResponse.Failure(
concreteIndex.getName(),
docWriteRequest.type(),
docWriteRequest.id(),
e
);
BulkItemResponse.Failure failure = new BulkItemResponse.Failure(concreteIndex.getName(), docWriteRequest.id(), e);
BulkItemResponse bulkItemResponse = new BulkItemResponse(i, docWriteRequest.opType(), failure);
responses.set(i, bulkItemResponse);
// make sure the request gets never processed again
@ -659,7 +651,7 @@ public class TransportBulkAction extends HandledTransportAction<BulkRequest, Bul
new BulkItemResponse(
request.id(),
docWriteRequest.opType(),
new BulkItemResponse.Failure(indexName, docWriteRequest.type(), docWriteRequest.id(), e)
new BulkItemResponse.Failure(indexName, docWriteRequest.id(), e)
)
);
}
@ -759,12 +751,7 @@ public class TransportBulkAction extends HandledTransportAction<BulkRequest, Bul
}
private void addFailure(DocWriteRequest<?> request, int idx, Exception unavailableException) {
BulkItemResponse.Failure failure = new BulkItemResponse.Failure(
request.index(),
request.type(),
request.id(),
unavailableException
);
BulkItemResponse.Failure failure = new BulkItemResponse.Failure(request.index(), request.id(), unavailableException);
BulkItemResponse bulkItemResponse = new BulkItemResponse(idx, request.opType(), failure);
responses.set(idx, bulkItemResponse);
// make sure the request gets never processed again
@ -992,12 +979,7 @@ public class TransportBulkAction extends HandledTransportAction<BulkRequest, Bul
// 2) Add a bulk item failure for this request
// 3) Continue with the next request in the bulk.
failedSlots.set(slot);
BulkItemResponse.Failure failure = new BulkItemResponse.Failure(
indexRequest.index(),
indexRequest.type(),
indexRequest.id(),
e
);
BulkItemResponse.Failure failure = new BulkItemResponse.Failure(indexRequest.index(), indexRequest.id(), e);
itemResponses.add(new BulkItemResponse(slot, indexRequest.opType(), failure));
}

View File

@ -184,22 +184,6 @@ public class DeleteRequest extends ReplicatedWriteRequest<DeleteRequest>
return this;
}
/**
* Set the default type supplied to a bulk
* request if this individual request's type is null
* or empty
*
* @deprecated Types are in the process of being removed.
*/
@Deprecated
@Override
public DeleteRequest defaultTypeIfNull(String defaultType) {
if (Strings.isNullOrEmpty(type)) {
type = defaultType;
}
return this;
}
/**
* The id of the document to delete.
*/

View File

@ -322,21 +322,6 @@ public class IndexRequest extends ReplicatedWriteRequest<IndexRequest> implement
return this;
}
/**
* Set the default type supplied to a bulk
* request if this individual request's type is null
* or empty
* @deprecated Types are in the process of being removed.
*/
@Deprecated
@Override
public IndexRequest defaultTypeIfNull(String defaultType) {
if (Strings.isNullOrEmpty(type)) {
type = defaultType;
}
return this;
}
/**
* The id of the indexed document. If not set, will be automatically generated.
*/

View File

@ -288,21 +288,6 @@ public class UpdateRequest extends InstanceShardOperationRequest<UpdateRequest>
return this;
}
/**
* Set the default type supplied to a bulk
* request if this individual request's type is null
* or empty
* @deprecated Types are in the process of being removed.
*/
@Deprecated
@Override
public UpdateRequest defaultTypeIfNull(String defaultType) {
if (Strings.isNullOrEmpty(type)) {
type = defaultType;
}
return this;
}
/**
* The id of the indexed document.
*/

View File

@ -243,9 +243,9 @@ public interface Client extends OpenSearchClient, Releasable {
BulkRequestBuilder prepareBulk();
/**
* Executes a bulk of index / delete operations with default index and/or type
* Executes a bulk of index / delete operations with default index
*/
BulkRequestBuilder prepareBulk(@Nullable String globalIndex, @Nullable String globalType);
BulkRequestBuilder prepareBulk(@Nullable String globalIndex);
/**
* Gets the document that was indexed from an index with a type and id.

View File

@ -512,8 +512,8 @@ public abstract class AbstractClient implements Client {
}
@Override
public BulkRequestBuilder prepareBulk(@Nullable String globalIndex, @Nullable String globalType) {
return new BulkRequestBuilder(this, BulkAction.INSTANCE, globalIndex, globalType);
public BulkRequestBuilder prepareBulk(@Nullable String globalIndex) {
return new BulkRequestBuilder(this, BulkAction.INSTANCE, globalIndex);
}
@Override

View File

@ -240,7 +240,6 @@ public class BulkByScrollResponse extends ActionResponse implements ToXContentFr
ensureExpectedToken(Token.START_OBJECT, parser.currentToken(), parser);
Token token;
String index = null;
String type = null;
String id = null;
Integer status = null;
Integer shardId = null;
@ -270,9 +269,6 @@ public class BulkByScrollResponse extends ActionResponse implements ToXContentFr
case Failure.INDEX_FIELD:
index = parser.text();
break;
case Failure.TYPE_FIELD:
type = parser.text();
break;
case Failure.ID_FIELD:
id = parser.text();
break;
@ -298,7 +294,7 @@ public class BulkByScrollResponse extends ActionResponse implements ToXContentFr
}
}
if (bulkExc != null) {
return new Failure(index, type, id, bulkExc, RestStatus.fromCode(status));
return new Failure(index, id, bulkExc, RestStatus.fromCode(status));
} else if (searchExc != null) {
if (status == null) {
return new SearchFailure(searchExc, index, shardId, nodeId);

View File

@ -38,13 +38,10 @@ import org.opensearch.action.bulk.BulkShardRequest;
import org.opensearch.action.support.ActiveShardCount;
import org.opensearch.client.Requests;
import org.opensearch.client.node.NodeClient;
import org.opensearch.common.logging.DeprecationLogger;
import org.opensearch.common.settings.Settings;
import org.opensearch.index.mapper.MapperService;
import org.opensearch.rest.BaseRestHandler;
import org.opensearch.rest.RestRequest;
import org.opensearch.rest.action.RestStatusToXContentListener;
import org.opensearch.rest.action.search.RestSearchAction;
import org.opensearch.search.fetch.subphase.FetchSourceContext;
import java.io.IOException;
@ -57,18 +54,16 @@ import static org.opensearch.rest.RestRequest.Method.PUT;
/**
* <pre>
* { "index" : { "_index" : "test", "_type" : "type1", "_id" : "1" }
* { "index" : { "_index" : "test", "_id" : "1" }
* { "type1" : { "field1" : "value1" } }
* { "delete" : { "_index" : "test", "_type" : "type1", "_id" : "2" } }
* { "create" : { "_index" : "test", "_type" : "type1", "_id" : "1" }
* { "delete" : { "_index" : "test", "_id" : "2" } }
* { "create" : { "_index" : "test", "_id" : "1" }
* { "type1" : { "field1" : "value1" } }
* </pre>
*/
public class RestBulkAction extends BaseRestHandler {
private final boolean allowExplicitIndex;
private static final DeprecationLogger deprecationLogger = DeprecationLogger.getLogger(RestSearchAction.class);
public static final String TYPES_DEPRECATION_MESSAGE = "[types removal]" + " Specifying types in bulk requests is deprecated.";
public RestBulkAction(Settings settings) {
this.allowExplicitIndex = MULTI_ALLOW_EXPLICIT_INDEX.get(settings);
@ -77,15 +72,7 @@ public class RestBulkAction extends BaseRestHandler {
@Override
public List<Route> routes() {
return unmodifiableList(
asList(
new Route(POST, "/_bulk"),
new Route(PUT, "/_bulk"),
new Route(POST, "/{index}/_bulk"),
new Route(PUT, "/{index}/_bulk"),
// Deprecated typed endpoints.
new Route(POST, "/{index}/{type}/_bulk"),
new Route(PUT, "/{index}/{type}/_bulk")
)
asList(new Route(POST, "/_bulk"), new Route(PUT, "/_bulk"), new Route(POST, "/{index}/_bulk"), new Route(PUT, "/{index}/_bulk"))
);
}
@ -98,12 +85,6 @@ public class RestBulkAction extends BaseRestHandler {
public RestChannelConsumer prepareRequest(final RestRequest request, final NodeClient client) throws IOException {
BulkRequest bulkRequest = Requests.bulkRequest();
String defaultIndex = request.param("index");
String defaultType = request.param("type");
if (defaultType == null) {
defaultType = MapperService.SINGLE_MAPPING_NAME;
} else {
deprecationLogger.deprecate("bulk_with_types", RestBulkAction.TYPES_DEPRECATION_MESSAGE);
}
String defaultRouting = request.param("routing");
FetchSourceContext defaultFetchSourceContext = FetchSourceContext.parseFromRestRequest(request);
String defaultPipeline = request.param("pipeline");
@ -117,7 +98,6 @@ public class RestBulkAction extends BaseRestHandler {
bulkRequest.add(
request.requiredContent(),
defaultIndex,
defaultType,
defaultRouting,
defaultFetchSourceContext,
defaultPipeline,

View File

@ -882,7 +882,7 @@ public class OpenSearchExceptionTests extends OpenSearchTestCase {
failure = new RuntimeException("E", failureCause);
expectedCause = new OpenSearchException(
"OpenSearch exception [type=routing_missing_exception, " + "reason=routing is required for [idx]/[type]/[id]]"
"OpenSearch exception [type=routing_missing_exception, " + "reason=routing is required for [idx]/[id]]"
);
expectedCause.addMetadata("opensearch.index", "idx");
expectedCause.addMetadata("opensearch.index_uuid", "_na_");

View File

@ -57,7 +57,7 @@ import static org.hamcrest.Matchers.containsString;
public class BulkItemResponseTests extends OpenSearchTestCase {
public void testFailureToString() {
Failure failure = new Failure("index", "type", "id", new RuntimeException("test"));
Failure failure = new Failure("index", "id", new RuntimeException("test"));
String toString = failure.toString();
assertThat(toString, containsString("\"type\":\"runtime_exception\""));
assertThat(toString, containsString("\"reason\":\"test\""));
@ -101,16 +101,15 @@ public class BulkItemResponseTests extends OpenSearchTestCase {
int itemId = randomIntBetween(0, 100);
String index = randomAlphaOfLength(5);
String type = randomAlphaOfLength(5);
String id = randomAlphaOfLength(5);
DocWriteRequest.OpType opType = randomFrom(DocWriteRequest.OpType.values());
final Tuple<Throwable, OpenSearchException> exceptions = randomExceptions();
Exception bulkItemCause = (Exception) exceptions.v1();
Failure bulkItemFailure = new Failure(index, type, id, bulkItemCause);
Failure bulkItemFailure = new Failure(index, id, bulkItemCause);
BulkItemResponse bulkItemResponse = new BulkItemResponse(itemId, opType, bulkItemFailure);
Failure expectedBulkItemFailure = new Failure(index, type, id, exceptions.v2(), ExceptionsHelper.status(bulkItemCause));
Failure expectedBulkItemFailure = new Failure(index, id, exceptions.v2(), ExceptionsHelper.status(bulkItemCause));
BulkItemResponse expectedBulkItemResponse = new BulkItemResponse(itemId, opType, expectedBulkItemFailure);
BytesReference originalBytes = toShuffledXContent(bulkItemResponse, xContentType, ToXContent.EMPTY_PARAMS, randomBoolean());
@ -133,7 +132,6 @@ public class BulkItemResponseTests extends OpenSearchTestCase {
public static void assertBulkItemResponse(BulkItemResponse expected, BulkItemResponse actual) {
assertEquals(expected.getItemId(), actual.getItemId());
assertEquals(expected.getIndex(), actual.getIndex());
assertEquals(expected.getType(), actual.getType());
assertEquals(expected.getId(), actual.getId());
assertEquals(expected.getOpType(), actual.getOpType());
assertEquals(expected.getVersion(), actual.getVersion());
@ -144,7 +142,6 @@ public class BulkItemResponseTests extends OpenSearchTestCase {
BulkItemResponse.Failure actualFailure = actual.getFailure();
assertEquals(expectedFailure.getIndex(), actualFailure.getIndex());
assertEquals(expectedFailure.getType(), actualFailure.getType());
assertEquals(expectedFailure.getId(), actualFailure.getId());
assertEquals(expectedFailure.getMessage(), actualFailure.getMessage());
assertEquals(expectedFailure.getStatus(), actualFailure.getStatus());

View File

@ -87,7 +87,6 @@ public class BulkRequestModifierTests extends OpenSearchTestCase {
BulkItemResponse item = bulkResponse.getItems()[j];
assertThat(item.isFailed(), is(true));
assertThat(item.getFailure().getIndex(), equalTo("_index"));
assertThat(item.getFailure().getType(), equalTo("_type"));
assertThat(item.getFailure().getId(), equalTo(String.valueOf(j)));
assertThat(item.getFailure().getMessage(), equalTo("java.lang.RuntimeException"));
} else {

View File

@ -35,7 +35,6 @@ package org.opensearch.action.bulk;
import org.opensearch.action.index.IndexRequest;
import org.opensearch.common.bytes.BytesArray;
import org.opensearch.common.xcontent.XContentType;
import org.opensearch.rest.action.document.RestBulkAction;
import org.opensearch.test.OpenSearchTestCase;
import org.hamcrest.Matchers;
@ -50,7 +49,7 @@ public class BulkRequestParserTests extends OpenSearchTestCase {
BytesArray request = new BytesArray("{ \"index\":{ \"_id\": \"bar\" } }\n{}\n");
BulkRequestParser parser = new BulkRequestParser(randomBoolean());
final AtomicBoolean parsed = new AtomicBoolean();
parser.parse(request, "foo", null, null, null, null, false, XContentType.JSON, indexRequest -> {
parser.parse(request, "foo", null, null, null, null, false, XContentType.JSON, (indexRequest, type) -> {
assertFalse(parsed.get());
assertEquals("foo", indexRequest.index());
assertEquals("bar", indexRequest.id());
@ -68,7 +67,7 @@ public class BulkRequestParserTests extends OpenSearchTestCase {
true,
false,
XContentType.JSON,
indexRequest -> { assertTrue(indexRequest.isRequireAlias()); },
(indexRequest, type) -> { assertTrue(indexRequest.isRequireAlias()); },
req -> fail(),
req -> fail()
);
@ -83,7 +82,7 @@ public class BulkRequestParserTests extends OpenSearchTestCase {
null,
false,
XContentType.JSON,
indexRequest -> { assertTrue(indexRequest.isRequireAlias()); },
(indexRequest, type) -> { assertTrue(indexRequest.isRequireAlias()); },
req -> fail(),
req -> fail()
);
@ -98,7 +97,7 @@ public class BulkRequestParserTests extends OpenSearchTestCase {
true,
false,
XContentType.JSON,
indexRequest -> { assertFalse(indexRequest.isRequireAlias()); },
(indexRequest, type) -> { assertFalse(indexRequest.isRequireAlias()); },
req -> fail(),
req -> fail()
);
@ -108,12 +107,24 @@ public class BulkRequestParserTests extends OpenSearchTestCase {
BytesArray request = new BytesArray("{ \"delete\":{ \"_id\": \"bar\" } }\n");
BulkRequestParser parser = new BulkRequestParser(randomBoolean());
final AtomicBoolean parsed = new AtomicBoolean();
parser.parse(request, "foo", null, null, null, null, false, XContentType.JSON, req -> fail(), req -> fail(), deleteRequest -> {
assertFalse(parsed.get());
assertEquals("foo", deleteRequest.index());
assertEquals("bar", deleteRequest.id());
parsed.set(true);
});
parser.parse(
request,
"foo",
null,
null,
null,
null,
false,
XContentType.JSON,
(req, type) -> fail(),
req -> fail(),
deleteRequest -> {
assertFalse(parsed.get());
assertEquals("foo", deleteRequest.index());
assertEquals("bar", deleteRequest.id());
parsed.set(true);
}
);
assertTrue(parsed.get());
}
@ -121,7 +132,7 @@ public class BulkRequestParserTests extends OpenSearchTestCase {
BytesArray request = new BytesArray("{ \"update\":{ \"_id\": \"bar\" } }\n{}\n");
BulkRequestParser parser = new BulkRequestParser(randomBoolean());
final AtomicBoolean parsed = new AtomicBoolean();
parser.parse(request, "foo", null, null, null, null, false, XContentType.JSON, req -> fail(), updateRequest -> {
parser.parse(request, "foo", null, null, null, null, false, XContentType.JSON, (req, type) -> fail(), updateRequest -> {
assertFalse(parsed.get());
assertEquals("foo", updateRequest.index());
assertEquals("bar", updateRequest.id());
@ -139,7 +150,7 @@ public class BulkRequestParserTests extends OpenSearchTestCase {
true,
false,
XContentType.JSON,
req -> fail(),
(req, type) -> fail(),
updateRequest -> { assertTrue(updateRequest.isRequireAlias()); },
req -> fail()
);
@ -154,7 +165,7 @@ public class BulkRequestParserTests extends OpenSearchTestCase {
null,
false,
XContentType.JSON,
req -> fail(),
(req, type) -> fail(),
updateRequest -> { assertTrue(updateRequest.isRequireAlias()); },
req -> fail()
);
@ -169,7 +180,7 @@ public class BulkRequestParserTests extends OpenSearchTestCase {
true,
false,
XContentType.JSON,
req -> fail(),
(req, type) -> fail(),
updateRequest -> { assertFalse(updateRequest.isRequireAlias()); },
req -> fail()
);
@ -189,7 +200,7 @@ public class BulkRequestParserTests extends OpenSearchTestCase {
null,
false,
XContentType.JSON,
indexRequest -> fail(),
(indexRequest, type) -> fail(),
req -> fail(),
req -> fail()
)
@ -203,24 +214,34 @@ public class BulkRequestParserTests extends OpenSearchTestCase {
IllegalArgumentException ex = expectThrows(
IllegalArgumentException.class,
() -> parser.parse(request, null, null, null, null, null, false, XContentType.JSON, req -> fail(), req -> fail(), req -> fail())
() -> parser.parse(
request,
null,
null,
null,
null,
null,
false,
XContentType.JSON,
(req, type) -> fail(),
req -> fail(),
req -> fail()
)
);
assertEquals("explicit index in bulk is not allowed", ex.getMessage());
}
public void testTypeWarning() throws IOException {
public void testTypesStillParsedForBulkMonitoring() throws IOException {
BytesArray request = new BytesArray("{ \"index\":{ \"_type\": \"quux\", \"_id\": \"bar\" } }\n{}\n");
BulkRequestParser parser = new BulkRequestParser(true);
BulkRequestParser parser = new BulkRequestParser(false);
final AtomicBoolean parsed = new AtomicBoolean();
parser.parse(request, "foo", null, null, null, null, false, XContentType.JSON, indexRequest -> {
parser.parse(request, "foo", null, null, null, null, false, XContentType.JSON, (indexRequest, type) -> {
assertFalse(parsed.get());
assertEquals("foo", indexRequest.index());
assertEquals("bar", indexRequest.id());
parsed.set(true);
}, req -> fail(), req -> fail());
assertTrue(parsed.get());
assertWarnings(RestBulkAction.TYPES_DEPRECATION_MESSAGE);
}
public void testParseDeduplicatesParameterStrings() throws IOException {
@ -230,7 +251,19 @@ public class BulkRequestParserTests extends OpenSearchTestCase {
);
BulkRequestParser parser = new BulkRequestParser(randomBoolean());
final List<IndexRequest> indexRequests = new ArrayList<>();
parser.parse(request, null, null, null, null, null, true, XContentType.JSON, indexRequests::add, req -> fail(), req -> fail());
parser.parse(
request,
null,
null,
null,
null,
null,
true,
XContentType.JSON,
(indexRequest, type) -> indexRequests.add(indexRequest),
req -> fail(),
req -> fail()
);
assertThat(indexRequests, Matchers.hasSize(2));
final IndexRequest first = indexRequests.get(0);
final IndexRequest second = indexRequests.get(1);

View File

@ -47,7 +47,6 @@ import org.opensearch.common.xcontent.XContentBuilder;
import org.opensearch.common.xcontent.XContentFactory;
import org.opensearch.common.xcontent.XContentHelper;
import org.opensearch.common.xcontent.XContentType;
import org.opensearch.rest.action.document.RestBulkAction;
import org.opensearch.script.Script;
import org.opensearch.test.OpenSearchTestCase;
@ -76,12 +75,10 @@ public class BulkRequestTests extends OpenSearchTestCase {
assertThat(((IndexRequest) bulkRequest.requests().get(0)).source(), equalTo(new BytesArray("{ \"field1\" : \"value1\" }")));
assertThat(bulkRequest.requests().get(1), instanceOf(DeleteRequest.class));
assertThat(((IndexRequest) bulkRequest.requests().get(2)).source(), equalTo(new BytesArray("{ \"field1\" : \"value3\" }")));
// This test's JSON contains outdated references to types
assertWarnings(RestBulkAction.TYPES_DEPRECATION_MESSAGE);
}
public void testSimpleBulkWithCarriageReturn() throws Exception {
String bulkAction = "{ \"index\":{\"_index\":\"test\",\"_type\":\"type1\",\"_id\":\"1\"} }\r\n{ \"field1\" : \"value1\" }\r\n";
String bulkAction = "{ \"index\":{\"_index\":\"test\",\"_id\":\"1\"} }\r\n{ \"field1\" : \"value1\" }\r\n";
BulkRequest bulkRequest = new BulkRequest();
bulkRequest.add(bulkAction.getBytes(StandardCharsets.UTF_8), 0, bulkAction.length(), null, XContentType.JSON);
assertThat(bulkRequest.numberOfActions(), equalTo(1));
@ -92,8 +89,6 @@ public class BulkRequestTests extends OpenSearchTestCase {
XContentType.JSON
).v2();
assertEquals("value1", sourceMap.get("field1"));
// This test's JSON contains outdated references to types
assertWarnings(RestBulkAction.TYPES_DEPRECATION_MESSAGE);
}
public void testSimpleBulk2() throws Exception {
@ -119,7 +114,6 @@ public class BulkRequestTests extends OpenSearchTestCase {
assertThat(((UpdateRequest) bulkRequest.requests().get(0)).retryOnConflict(), equalTo(2));
assertThat(((UpdateRequest) bulkRequest.requests().get(0)).doc().source().utf8ToString(), equalTo("{\"field\":\"value\"}"));
assertThat(bulkRequest.requests().get(1).id(), equalTo("0"));
assertThat(bulkRequest.requests().get(1).type(), equalTo("type1"));
assertThat(bulkRequest.requests().get(1).index(), equalTo("index1"));
Script script = ((UpdateRequest) bulkRequest.requests().get(1)).script();
assertThat(script, notNullValue());
@ -130,22 +124,18 @@ public class BulkRequestTests extends OpenSearchTestCase {
assertThat(scriptParams.size(), equalTo(1));
assertThat(scriptParams.get("param1"), equalTo(1));
assertThat(((UpdateRequest) bulkRequest.requests().get(1)).upsertRequest().source().utf8ToString(), equalTo("{\"counter\":1}"));
// This test's JSON contains outdated references to types
assertWarnings(RestBulkAction.TYPES_DEPRECATION_MESSAGE);
}
public void testBulkAllowExplicitIndex() throws Exception {
String bulkAction1 = copyToStringFromClasspath("/org/opensearch/action/bulk/simple-bulk.json");
Exception ex = expectThrows(
Exception.class,
() -> new BulkRequest().add(new BytesArray(bulkAction1.getBytes(StandardCharsets.UTF_8)), null, null, false, XContentType.JSON)
() -> new BulkRequest().add(new BytesArray(bulkAction1.getBytes(StandardCharsets.UTF_8)), null, false, XContentType.JSON)
);
assertEquals("explicit index in bulk is not allowed", ex.getMessage());
String bulkAction = copyToStringFromClasspath("/org/opensearch/action/bulk/simple-bulk5.json");
new BulkRequest().add(new BytesArray(bulkAction.getBytes(StandardCharsets.UTF_8)), "test", null, false, XContentType.JSON);
// This test's JSON contains outdated references to types
assertWarnings(RestBulkAction.TYPES_DEPRECATION_MESSAGE);
new BulkRequest().add(new BytesArray(bulkAction.getBytes(StandardCharsets.UTF_8)), "test", false, XContentType.JSON);
}
public void testBulkAddIterable() {
@ -169,8 +159,6 @@ public class BulkRequestTests extends OpenSearchTestCase {
() -> bulkRequest.add(bulkAction.getBytes(StandardCharsets.UTF_8), 0, bulkAction.length(), null, XContentType.JSON)
);
assertThat(exc.getMessage(), containsString("Unknown key for a VALUE_STRING in [hello]"));
// This test's JSON contains outdated references to types
assertWarnings(RestBulkAction.TYPES_DEPRECATION_MESSAGE);
}
public void testSimpleBulk7() throws Exception {
@ -184,8 +172,6 @@ public class BulkRequestTests extends OpenSearchTestCase {
exc.getMessage(),
containsString("Malformed action/metadata line [5], expected a simple value for field [_unknown] but found [START_ARRAY]")
);
// This test's JSON contains outdated references to types
assertWarnings(RestBulkAction.TYPES_DEPRECATION_MESSAGE);
}
public void testSimpleBulk8() throws Exception {
@ -196,8 +182,6 @@ public class BulkRequestTests extends OpenSearchTestCase {
() -> bulkRequest.add(bulkAction.getBytes(StandardCharsets.UTF_8), 0, bulkAction.length(), null, XContentType.JSON)
);
assertThat(exc.getMessage(), containsString("Action/metadata line [3] contains an unknown parameter [_foo]"));
// This test's JSON contains outdated references to types
assertWarnings(RestBulkAction.TYPES_DEPRECATION_MESSAGE);
}
public void testSimpleBulk9() throws Exception {
@ -218,13 +202,10 @@ public class BulkRequestTests extends OpenSearchTestCase {
BulkRequest bulkRequest = new BulkRequest();
bulkRequest.add(bulkAction.getBytes(StandardCharsets.UTF_8), 0, bulkAction.length(), null, XContentType.JSON);
assertThat(bulkRequest.numberOfActions(), equalTo(9));
// This test's JSON contains outdated references to types
assertWarnings(RestBulkAction.TYPES_DEPRECATION_MESSAGE);
}
public void testBulkActionShouldNotContainArray() throws Exception {
String bulkAction = "{ \"index\":{\"_index\":[\"index1\", \"index2\"],\"_type\":\"type1\",\"_id\":\"1\"} }\r\n"
+ "{ \"field1\" : \"value1\" }\r\n";
String bulkAction = "{ \"index\":{\"_index\":[\"index1\", \"index2\"],\"_id\":\"1\"} }\r\n" + "{ \"field1\" : \"value1\" }\r\n";
BulkRequest bulkRequest = new BulkRequest();
IllegalArgumentException exc = expectThrows(
IllegalArgumentException.class,
@ -318,7 +299,6 @@ public class BulkRequestTests extends OpenSearchTestCase {
builder.startObject();
builder.startObject("index");
builder.field("_index", "index");
builder.field("_type", "type");
builder.field("_id", "test");
builder.endObject();
builder.endObject();
@ -334,19 +314,16 @@ public class BulkRequestTests extends OpenSearchTestCase {
}
BulkRequest bulkRequest = new BulkRequest();
bulkRequest.add(data, null, null, xContentType);
bulkRequest.add(data, null, xContentType);
assertEquals(1, bulkRequest.requests().size());
DocWriteRequest<?> docWriteRequest = bulkRequest.requests().get(0);
assertEquals(DocWriteRequest.OpType.INDEX, docWriteRequest.opType());
assertEquals("index", docWriteRequest.index());
assertEquals("type", docWriteRequest.type());
assertEquals("test", docWriteRequest.id());
assertThat(docWriteRequest, instanceOf(IndexRequest.class));
IndexRequest request = (IndexRequest) docWriteRequest;
assertEquals(1, request.sourceAsMap().size());
assertEquals("value", request.sourceAsMap().get("field"));
// This test's content contains outdated references to types
assertWarnings(RestBulkAction.TYPES_DEPRECATION_MESSAGE);
}
public void testToValidateUpsertRequestAndCASInBulkRequest() throws IOException {
@ -357,7 +334,6 @@ public class BulkRequestTests extends OpenSearchTestCase {
builder.startObject();
builder.startObject("update");
builder.field("_index", "index");
builder.field("_type", "type");
builder.field("_id", "id");
builder.field("if_seq_no", 1L);
builder.field("if_primary_term", 100L);
@ -372,7 +348,6 @@ public class BulkRequestTests extends OpenSearchTestCase {
values.put("if_seq_no", 1L);
values.put("if_primary_term", 100L);
values.put("_index", "index");
values.put("_type", "type");
builder.field("upsert", values);
builder.endObject();
}
@ -380,10 +355,8 @@ public class BulkRequestTests extends OpenSearchTestCase {
data = out.bytes();
}
BulkRequest bulkRequest = new BulkRequest();
bulkRequest.add(data, null, null, xContentType);
bulkRequest.add(data, null, xContentType);
assertThat(bulkRequest.validate().validationErrors(), contains("upsert requests don't support `if_seq_no` and `if_primary_term`"));
// This test's JSON contains outdated references to types
assertWarnings(RestBulkAction.TYPES_DEPRECATION_MESSAGE);
}
public void testBulkTerminatedByNewline() throws Exception {
@ -404,7 +377,5 @@ public class BulkRequestTests extends OpenSearchTestCase {
XContentType.JSON
);
assertEquals(3, bulkRequestWithNewLine.numberOfActions());
// This test's JSON contains outdated references to types
assertWarnings(RestBulkAction.TYPES_DEPRECATION_MESSAGE);
}
}

View File

@ -86,17 +86,16 @@ public class BulkResponseTests extends OpenSearchTestCase {
expectedBulkItems[i] = new BulkItemResponse(i, opType, randomDocWriteResponses.v2());
} else {
String index = randomAlphaOfLength(5);
String type = randomAlphaOfLength(5);
String id = randomAlphaOfLength(5);
Tuple<Throwable, OpenSearchException> failures = randomExceptions();
Exception bulkItemCause = (Exception) failures.v1();
bulkItems[i] = new BulkItemResponse(i, opType, new BulkItemResponse.Failure(index, type, id, bulkItemCause));
bulkItems[i] = new BulkItemResponse(i, opType, new BulkItemResponse.Failure(index, id, bulkItemCause));
expectedBulkItems[i] = new BulkItemResponse(
i,
opType,
new BulkItemResponse.Failure(index, type, id, failures.v2(), ExceptionsHelper.status(bulkItemCause))
new BulkItemResponse.Failure(index, id, failures.v2(), ExceptionsHelper.status(bulkItemCause))
);
}
}

View File

@ -249,7 +249,7 @@ public class RetryTests extends OpenSearchTestCase {
return new BulkItemResponse(
1,
OpType.INDEX,
new BulkItemResponse.Failure("test", "test", "1", new OpenSearchRejectedExecutionException("pool full"))
new BulkItemResponse.Failure("test", "1", new OpenSearchRejectedExecutionException("pool full"))
);
}
}

View File

@ -55,7 +55,6 @@ import org.opensearch.common.util.concurrent.ThreadContext;
import org.opensearch.common.xcontent.XContentType;
import org.opensearch.index.IndexNotFoundException;
import org.opensearch.index.IndexingPressureService;
import org.opensearch.rest.action.document.RestBulkAction;
import org.opensearch.indices.SystemIndices;
import org.opensearch.tasks.Task;
import org.opensearch.test.OpenSearchTestCase;
@ -242,8 +241,6 @@ public class TransportBulkActionTookTests extends OpenSearchTestCase {
}
});
// This test's JSON contains outdated references to types
assertWarnings(RestBulkAction.TYPES_DEPRECATION_MESSAGE);
}
static class Resolver extends IndexNameExpressionResolver {

View File

@ -186,7 +186,6 @@ public class TransportShardBulkActionTests extends IndexShardTestCase {
BulkItemResponse.Failure failure = primaryResponse.getFailure();
assertThat(failure.getIndex(), equalTo("index"));
assertThat(failure.getType(), equalTo("_doc"));
assertThat(failure.getId(), equalTo("id"));
assertThat(failure.getCause().getClass(), equalTo(VersionConflictEngineException.class));
assertThat(failure.getCause().getMessage(), containsString("version conflict, document already exists (current version [1])"));
@ -236,7 +235,6 @@ public class TransportShardBulkActionTests extends IndexShardTestCase {
BulkItemResponse response = result.finalResponseIfSuccessful.getResponses()[i];
assertThat(response.getItemId(), equalTo(i));
assertThat(response.getIndex(), equalTo("index"));
assertThat(response.getType(), equalTo("_doc"));
assertThat(response.getId(), equalTo("id_" + i));
assertThat(response.getOpType(), equalTo(DocWriteRequest.OpType.INDEX));
if (response.getItemId() == rejectItem.id()) {
@ -394,7 +392,6 @@ public class TransportShardBulkActionTests extends IndexShardTestCase {
assertThat(primaryResponse.getFailureMessage(), containsString("some kind of exception"));
BulkItemResponse.Failure failure = primaryResponse.getFailure();
assertThat(failure.getIndex(), equalTo("index"));
assertThat(failure.getType(), equalTo("_doc"));
assertThat(failure.getId(), equalTo("id"));
assertThat(failure.getCause(), equalTo(err));
@ -610,7 +607,6 @@ public class TransportShardBulkActionTests extends IndexShardTestCase {
assertThat(primaryResponse.getFailureMessage(), containsString("I'm dead <(x.x)>"));
BulkItemResponse.Failure failure = primaryResponse.getFailure();
assertThat(failure.getIndex(), equalTo("index"));
assertThat(failure.getType(), equalTo("_doc"));
assertThat(failure.getId(), equalTo("id"));
assertThat(failure.getCause(), equalTo(err));
assertThat(failure.getStatus(), equalTo(RestStatus.INTERNAL_SERVER_ERROR));
@ -670,7 +666,6 @@ public class TransportShardBulkActionTests extends IndexShardTestCase {
assertThat(primaryResponse.getFailureMessage(), containsString("I'm conflicted <(;_;)>"));
BulkItemResponse.Failure failure = primaryResponse.getFailure();
assertThat(failure.getIndex(), equalTo("index"));
assertThat(failure.getType(), equalTo("_doc"));
assertThat(failure.getId(), equalTo("id"));
assertThat(failure.getCause(), equalTo(err));
assertThat(failure.getStatus(), equalTo(RestStatus.CONFLICT));
@ -833,7 +828,6 @@ public class TransportShardBulkActionTests extends IndexShardTestCase {
assertThat(primaryResponse.getFailureMessage(), containsString("oops"));
BulkItemResponse.Failure failure = primaryResponse.getFailure();
assertThat(failure.getIndex(), equalTo("index"));
assertThat(failure.getType(), equalTo("_doc"));
assertThat(failure.getId(), equalTo("id"));
assertThat(failure.getCause(), equalTo(err));
assertThat(failure.getStatus(), equalTo(RestStatus.INTERNAL_SERVER_ERROR));
@ -888,7 +882,7 @@ public class TransportShardBulkActionTests extends IndexShardTestCase {
new BulkItemResponse(
0,
randomFrom(DocWriteRequest.OpType.CREATE, DocWriteRequest.OpType.DELETE, DocWriteRequest.OpType.INDEX),
new BulkItemResponse.Failure("index", "_doc", "1", exception, 1L, 1L)
new BulkItemResponse.Failure("index", "1", exception, 1L, 1L)
)
);
BulkItemRequest[] itemRequests = new BulkItemRequest[1];

View File

@ -81,14 +81,7 @@ public class BulkByScrollResponseTests extends AbstractXContentTestCase<BulkBySc
private List<Failure> randomIndexingFailures() {
return usually()
? emptyList()
: singletonList(
new Failure(
randomSimpleString(random()),
randomSimpleString(random()),
randomSimpleString(random()),
new IllegalArgumentException("test")
)
);
: singletonList(new Failure(randomSimpleString(random()), randomSimpleString(random()), new IllegalArgumentException("test")));
}
private List<ScrollableHitSource.SearchFailure> randomSearchFailures() {
@ -119,7 +112,6 @@ public class BulkByScrollResponseTests extends AbstractXContentTestCase<BulkBySc
Failure expectedFailure = expected.getBulkFailures().get(i);
Failure actualFailure = actual.getBulkFailures().get(i);
assertEquals(expectedFailure.getIndex(), actualFailure.getIndex());
assertEquals(expectedFailure.getType(), actualFailure.getType());
assertEquals(expectedFailure.getId(), actualFailure.getId());
assertEquals(expectedFailure.getMessage(), actualFailure.getMessage());
assertEquals(expectedFailure.getStatus(), actualFailure.getStatus());
@ -150,7 +142,6 @@ public class BulkByScrollResponseTests extends AbstractXContentTestCase<BulkBySc
Failure expectedFailure = expected.getBulkFailures().get(i);
Failure actualFailure = actual.getBulkFailures().get(i);
assertEquals(expectedFailure.getIndex(), actualFailure.getIndex());
assertEquals(expectedFailure.getType(), actualFailure.getType());
assertEquals(expectedFailure.getId(), actualFailure.getId());
assertEquals(expectedFailure.getStatus(), actualFailure.getStatus());
}

View File

@ -1,24 +1,24 @@
{"index":{"_index":"logstash-2014.03.30","_type":"logs"}}
{"index":{"_index":"logstash-2014.03.30"}}
{"message":"in24.inetnebr.com--[01/Aug/1995:00:00:01-0400]\"GET/shuttle/missions/sts-68/news/sts-68-mcc-05.txtHTTP/1.0\"2001839","@version":"1","@timestamp":"2014-03-30T12:38:10.048Z","host":["romeo","in24.inetnebr.com"],"monthday":1,"month":8,"year":1995,"time":"00:00:01","tz":"-0400","request":"\"GET/shuttle/missions/sts-68/news/sts-68-mcc-05.txtHTTP/1.0\"","httpresponse":"200","size":1839,"rtime":"1995-08-01T00:00:01.000Z"}
{"index":{"_index":"logstash-2014.03.30","_type":"logs"}}
{"index":{"_index":"logstash-2014.03.30"}}
{"message":"in24.inetnebr.com--[01/Aug/1995:00:00:01-0400]\"GET/shuttle/missions/sts-68/news/sts-68-mcc-05.txtHTTP/1.0\"2001839","@version":"1","@timestamp":"2014-03-30T12:38:10.048Z","host":["romeo","in24.inetnebr.com"],"monthday":1,"month":8,"year":1995,"time":"00:00:01","tz":"-0400","request":"\"GET/shuttle/missions/sts-68/news/sts-68-mcc-05.txtHTTP/1.0\"","httpresponse":"200","size":1839,"rtime":"1995-08-01T00:00:01.000Z"}
{"index":{"_index":"logstash-2014.03.30","_type":"logs"}}
{"index":{"_index":"logstash-2014.03.30"}}
{"message":"in24.inetnebr.com--[01/Aug2/1995:00:00:01-0400]\"GET/shuttle/missions/sts-68/news/sts-68-mcc-05.txtHTTP/1.0\"2001839","@version":"1","@timestamp":"2014-03-30T12:38:10.048Z","host":["romeo","in24.inetnebr.com"],"monthday":1,"month":8,"year":1995,"time":"00:00:01","tz":"-0400","request":"\"GET/shuttle/missions/sts-68/news/sts-68-mcc-05.txtHTTP/1.0\"","httpresponse":"200","size":1839,"rtime":"1995-08-01T00:00:01.000Z"}
{"index":{"_index":"logstash-2014.03.30","_type":"logs"}}
{"index":{"_index":"logstash-2014.03.30"}}
{"message":"in24.inetnebr.com--[01/Aug/1995:00:00:01-0400]\"GET/shuttle/missions/sts-68/news/sts-68-mcc-05.txtHTTP/1.0\"2001839","@version":"1","@timestamp":"2014-03-30T12:38:10.048Z","host":["romeo","in24.inetnebr.com"],"monthday":1,"month":8,"year":1995,"time":"00:00:01","tz":"-0400","request":"\"GET/shuttle/missions/sts-68/news/sts-68-mcc-05.txtHTTP/1.0\"","httpresponse":"200","size":1839,"rtime":"1995-08-01T00:00:01.000Z"}
{"index":{"_index":"logstash-2014.03.30","_type":"logs"}}
{"index":{"_index":"logstash-2014.03.30"}}
{"message":"in24.inetnebr.com--[01/Aug/1995:00:00:01-0400]\"GET/shuttle/missions/sts-68/news/sts-68-mcc-05.txtHTTP/1.0\"2001839","@version":"1","@timestamp":"2014-03-30T12:38:10.048Z","host":["romeo","in24.inetnebr.com"],"monthday":1,"month":8,"year":1995,"time":"00:00:01","tz":"-0400","request":"\"GET/shuttle/missions/sts-68/news/sts-68-mcc-05.txtHTTP/1.0\"","httpresponse":"200","size":1839,"rtime":"1995-08-01T00:00:01.000Z"}
{"index":{"_index":"logstash-2014.03.30","_type":"logs"}}
{"index":{"_index":"logstash-2014.03.30"}}
{"message":"in24.inetnebr.com--[01/Aug2/1995:00:00:01-0400]\"GET/shuttle/missions/sts-68/news/sts-68-mcc-05.txtHTTP/1.0\"2001839","@version":"1","@timestamp":"2014-03-30T12:38:10.048Z","host":["romeo","in24.inetnebr.com"],"monthday":1,"month":8,"year":1995,"time":"00:00:01","tz":"-0400","request":"\"GET/shuttle/missions/sts-68/news/sts-68-mcc-05.txtHTTP/1.0\"","httpresponse":"200","size":1839,"rtime":"1995-08-01T00:00:01.000Z"}
{"index":{"_index":"logstash-2014.03.30","_type":"logs"}}
{"index":{"_index":"logstash-2014.03.30"}}
{"message":"in24.inetnebr.com--[01/Aug/1995:00:00:01-0400]\"GET/shuttle/missions/sts-68/news/sts-68-mcc-05.txtHTTP/1.0\"2001839","@version":"1","@timestamp":"2014-03-30T12:38:10.048Z","host":["romeo","in24.inetnebr.com"],"monthday":1,"month":8,"year":1995,"time":"00:00:01","tz":"-0400","request":"\"GET/shuttle/missions/sts-68/news/sts-68-mcc-05.txtHTTP/1.0\"","httpresponse":"200","size":1839,"rtime":"1995-08-01T00:00:01.000Z"}
{"index":{"_index":"logstash-2014.03.30","_type":"logs"}}
{"index":{"_index":"logstash-2014.03.30"}}
{"message":"in24.inetnebr.com--[01/Aug/1995:00:00:01-0400]\"GET/shuttle/missions/sts-68/news/sts-68-mcc-05.txtHTTP/1.0\"2001839","@version":"1","@timestamp":"2014-03-30T12:38:10.048Z","host":["romeo","in24.inetnebr.com"],"monthday":1,"month":8,"year":1995,"time":"00:00:01","tz":"-0400","request":"\"GET/shuttle/missions/sts-68/news/sts-68-mcc-05.txtHTTP/1.0\"","httpresponse":"200","size":1839,"rtime":"1995-08-01T00:00:01.000Z"}
{"index":{"_index":"logstash-2014.03.30","_type":"logs"}}
{"index":{"_index":"logstash-2014.03.30"}}
{"message":"in24.inetnebr.com--[01/Aug2/1995:00:00:01-0400]\"GET/shuttle/missions/sts-68/news/sts-68-mcc-05.txtHTTP/1.0\"2001839","@version":"1","@timestamp":"2014-03-30T12:38:10.048Z","host":["romeo","in24.inetnebr.com"],"monthday":1,"month":8,"year":1995,"time":"00:00:01","tz":"-0400","request":"\"GET/shuttle/missions/sts-68/news/sts-68-mcc-05.txtHTTP/1.0\"","httpresponse":"200","size":1839,"rtime":"1995-08-01T00:00:01.000Z"}
{"index":{"_index":"logstash-2014.03.30","_type":"logs"}}
{"index":{"_index":"logstash-2014.03.30"}}
{"message":"in24.inetnebr.com--[01/Aug/1995:00:00:01-0400]\"GET/shuttle/missions/sts-68/news/sts-68-mcc-05.txtHTTP/1.0\"2001839","@version":"1","@timestamp":"2014-03-30T12:38:10.048Z","host":["romeo","in24.inetnebr.com"],"monthday":1,"month":8,"year":1995,"time":"00:00:01","tz":"-0400","request":"\"GET/shuttle/missions/sts-68/news/sts-68-mcc-05.txtHTTP/1.0\"","httpresponse":"200","size":1839,"rtime":"1995-08-01T00:00:01.000Z"}
{"index":{"_index":"logstash-2014.03.30","_type":"logs"}}
{"index":{"_index":"logstash-2014.03.30"}}
{"message":"in24.inetnebr.com--[01/Aug/1995:00:00:01-0400]\"GET/shuttle/missions/sts-68/news/sts-68-mcc-05.txtHTTP/1.0\"2001839","@version":"1","@timestamp":"2014-03-30T12:38:10.048Z","host":["romeo","in24.inetnebr.com"],"monthday":1,"month":8,"year":1995,"time":"00:00:01","tz":"-0400","request":"\"GET/shuttle/missions/sts-68/news/sts-68-mcc-05.txtHTTP/1.0\"","httpresponse":"200","size":1839,"rtime":"1995-08-01T00:00:01.000Z"}
{"index":{"_index":"logstash-2014.03.30","_type":"logs"}}
{"index":{"_index":"logstash-2014.03.30"}}
{"message":"in24.inetnebr.com--[01/Aug2/1995:00:00:01-0400]\"GET/shuttle/missions/sts-68/news/sts-68-mcc-05.txtHTTP/1.0\"2001839","@version":"1","@timestamp":"2014-03-30T12:38:10.048Z","host":["romeo","in24.inetnebr.com"],"monthday":1,"month":8,"year":1995,"time":"00:00:01","tz":"-0400","request":"\"GET/shuttle/missions/sts-68/news/sts-68-mcc-05.txtHTTP/1.0\"","httpresponse":"200","size":1839,"rtime":"1995-08-01T00:00:01.000Z"}

View File

@ -1,5 +1,5 @@
{ "index":{"_index":"test","_type":"type1","_id":"1"} }
{ "index":{"_index":"test","_id":"1"} }
{ "field1" : "value1" }
{ "delete" : { "_index" : "test", "_type" : "type1", "_id" : "2" } }
{ "create" : { "_index" : "test", "_type" : "type1", "_id" : "3" } }
{ "delete" : { "_index" : "test", "_id" : "2" } }
{ "create" : { "_index" : "test", "_id" : "3" } }
{ "field1" : "value3" }

View File

@ -1,15 +1,15 @@
{ "index" : {"_index":null, "_type":"type1", "_id":"0"} }
{ "index" : {"_index":null, "_id":"0"} }
{ "field1" : "value1" }
{ "index" : {"_index":"test", "_type":null, "_id":"0"} }
{ "index" : {"_index":"test", "_id":"0"} }
{ "field1" : "value1" }
{ "index" : {"_index":"test", "_type":"type1", "_id":null} }
{ "index" : {"_index":"test", "_id":null} }
{ "field1" : "value1" }
{ "delete" : {"_index":null, "_type":"type1", "_id":"0"} }
{ "delete" : {"_index":"test", "_type":null, "_id":"0"} }
{ "delete" : {"_index":"test", "_type":"type1", "_id":null} }
{ "create" : {"_index":null, "_type":"type1", "_id":"0"} }
{ "delete" : {"_index":null, "_id":"0"} }
{ "delete" : {"_index":"test", "_id":"0"} }
{ "delete" : {"_index":"test", "_id":null} }
{ "create" : {"_index":null, "_id":"0"} }
{ "field1" : "value1" }
{ "create" : {"_index":"test", "_type":null, "_id":"0"} }
{ "create" : {"_index":"test", "_id":"0"} }
{ "field1" : "value1" }
{ "create" : {"_index":"test", "_type":"type1", "_id":null} }
{ "create" : {"_index":"test", "_id":null} }
{ "field1" : "value1" }

View File

@ -1,5 +1,5 @@
{ "index":{"_index":"test","_type":"type1","_id":"1"} }
{ "index":{"_index":"test","_id":"1"} }
{ "field1" : "value1" }
{ "delete" : { "_index" : "test", "_type" : "type1", "_id" : "2" } }
{ "create" : { "_index" : "test", "_type" : "type1", "_id" : "3" } }
{ "delete" : { "_index" : "test", "_id" : "2" } }
{ "create" : { "_index" : "test", "_id" : "3" } }
{ "field1" : "value3" }

View File

@ -1,6 +1,6 @@
{ "update" : {"_id" : "1", "retry_on_conflict" : 2} }
{ "doc" : {"field" : "value"} }
{ "update" : { "_id" : "0", "_type" : "type1", "_index" : "index1" } }
{ "update" : { "_id" : "0", "_index" : "index1" } }
{ "script" : { "source" : "counter += param1", "lang" : "javascript", "params" : {"param1" : 1}}, "upsert" : {"counter" : 1}}
{ "delete" : { "_id" : "2" } }
{ "create" : { "_id" : "3" } }

View File

@ -1,5 +1,5 @@
{ "index": {"_type": "type1","_id": "1"} }
{ "index": { "_id": "1"} }
{ "field1" : "value1" }
{ "delete" : { "_type" : "type1", "_id" : "2" } }
{ "create" : { "_type" : "type1", "_id" : "3" } }
{ "delete" : { "_id" : "2" } }
{ "create" : { "_id" : "3" } }
{ "field1" : "value3" }

View File

@ -1,6 +1,6 @@
{"index": {"_index": "test", "_type": "doc", "_source": {"hello": "world"}, "_id": 0}}
{"index": {"_index": "test", "_source": {"hello": "world"}, "_id": 0}}
{"field1": "value0"}
{"index": {"_index": "test", "_type": "doc", "_id": 1}}
{"index": {"_index": "test", "_id": 1}}
{"field1": "value1"}
{"index": {"_index": "test", "_type": "doc", "_id": 2}}
{"index": {"_index": "test", "_id": 2}}
{"field1": "value2"}

View File

@ -1,6 +1,6 @@
{"index": {"_index": "test", "_type": "doc", "_id": 0}}
{"index": {"_index": "test", "_id": 0}}
{"field1": "value0"}
{"index": {"_index": "test", "_type": "doc", "_id": 1}}
{"index": {"_index": "test", "_id": 1}}
{"field1": "value1"}
{"index": {"_index": "test", "_type": "doc", "_id": 2, "_unknown": ["foo", "bar"]}}
{"index": {"_index": "test", "_id": 2, "_unknown": ["foo", "bar"]}}
{"field1": "value2"}

View File

@ -1,6 +1,6 @@
{"index": {"_index": "test", "_type": "doc", "_id": 0}}
{"index": {"_index": "test", "_id": 0}}
{"field1": "value0"}
{"index": {"_index": "test", "_type": "doc", "_id": 1, "_foo": "bar"}}
{"index": {"_index": "test", "_id": 1, "_foo": "bar"}}
{"field1": "value1"}
{"index": {"_index": "test", "_type": "doc", "_id": 2}}
{"index": {"_index": "test", "_id": 2}}
{"field1": "value2"}