siddhi-io / siddhi-store-elasticsearch

Extension that can be used to perform operations with Elastic Search
https://siddhi-io.github.io/siddhi-store-elasticsearch/
Apache License 2.0
3 stars 26 forks source link

Validation Failed: 1: type is missing; #30

Closed tr0mb1r closed 5 years ago

tr0mb1r commented 5 years ago

Description: An error appears when you try to post data in elasticsearch v6.8.2

Suggested Labels: elasticsearch,siddhi,tooling

Suggested Assignees: @mohanvive

Affected Product Version: siddhi-tooling 0.1.0

OS, DB, other environment details and versions:
elasticsearch 6.8.2, siddhi-tooling 0.1.0 Steps to reproduce:

  1. install elasticsearch 6.*
  2. install elasticsearch module 3.0.0 (module)
  3. create simple app to store something in new index
    
    @App:name("testApp")
    @App:description("Description of the plan")

@source(type = 'http', receiver.url = "http://0.0.0.0:8006/cargo",@map(type = 'json')) define stream CargoStream (weight int);

@store(type='elasticsearch', hostname='localhost',port='9200',index.name='siddhi',index.type='_doc'))) define table aps (weight int);

@info(name='JustAQuery') from CargoStream#window.length(3) select weight insert into aps;

The bulk request contains next data:
{"index":{"_index":"siddhi"}}
{"weight":123}
but the initial request in bulk must be:
{"index":{"_index":"siddhi",**"_type":"_doc"**}}
4. to reproduce correct request via kibana:

POST /siddhi/_bulk {"index":{"_index":"siddhi","_type":"_doc"}} {"weight":123}

Response with correct request:

{ "took" : 4, "errors" : false, "items" : [ { "index" : { "_index" : "siddhi", "_type" : "_doc", "_id" : "wDuA3WwBwwW5YdVipfGj", "_version" : 1, "result" : "created", "_shards" : { "total" : 2, "successful" : 1, "failed" : 0 }, "_seq_no" : 0, "_primary_term" : 1, "status" : 201 } } ] }

**Related Issues:**
#19

**ERROR**

[2019-08-29 15:08:04,054] ERROR {io.siddhi.extension.store.elasticsearch.ElasticsearchEventTable} - Failed to execute bulk ElasticsearchStatusException[Elasticsearch exception [type=action_request_validation_exception, reason=Validation Failed: 1: type is missing;]] at org.elasticsearch.rest.BytesRestResponse.errorFromXContent(BytesRestResponse.java:177) at org.elasticsearch.client.RestHighLevelClient.parseEntity(RestHighLevelClient.java:1706) at org.elasticsearch.client.RestHighLevelClient.parseResponseException(RestHighLevelClient.java:1683) at org.elasticsearch.client.RestHighLevelClient$1.onFailure(RestHighLevelClient.java:1600) at org.elasticsearch.client.RestClient$FailureTrackingResponseListener.onDefinitiveFailure(RestClient.java:580) at org.elasticsearch.client.RestClient$1.completed(RestClient.java:317) at org.elasticsearch.client.RestClient$1.completed(RestClient.java:301) at org.apache.http.concurrent.BasicFuture.completed(BasicFuture.java:119) at org.apache.http.impl.nio.client.DefaultClientExchangeHandlerImpl.responseCompleted(DefaultClientExchangeHandlerImpl.java:177) at org.apache.http.nio.protocol.HttpAsyncRequestExecutor.processResponse(HttpAsyncRequestExecutor.java:436) at org.apache.http.nio.protocol.HttpAsyncRequestExecutor.inputReady(HttpAsyncRequestExecutor.java:326) at org.apache.http.impl.nio.DefaultNHttpClientConnection.consumeInput(DefaultNHttpClientConnection.java:265) at org.apache.http.impl.nio.client.InternalIODispatch.onInputReady(InternalIODispatch.java:81) at org.apache.http.impl.nio.client.InternalIODispatch.onInputReady(InternalIODispatch.java:39) at org.apache.http.impl.nio.reactor.AbstractIODispatch.inputReady(AbstractIODispatch.java:114) at org.apache.http.impl.nio.reactor.BaseIOReactor.readable(BaseIOReactor.java:162) at org.apache.http.impl.nio.reactor.AbstractIOReactor.processEvent(AbstractIOReactor.java:337) at org.apache.http.impl.nio.reactor.AbstractIOReactor.processEvents(AbstractIOReactor.java:315) at org.apache.http.impl.nio.reactor.AbstractIOReactor.execute(AbstractIOReactor.java:276) at org.apache.http.impl.nio.reactor.BaseIOReactor.execute(BaseIOReactor.java:104) at org.apache.http.impl.nio.reactor.AbstractMultiworkerIOReactor$Worker.run(AbstractMultiworkerIOReactor.java:588) at java.lang.Thread.run(Thread.java:748) Suppressed: org.elasticsearch.client.ResponseException: method [POST], host [http://localhost:9200], URI [/_bulk?timeout=1m], status line [HTTP/1.1 400 Bad Request] {"error":{"root_cause":[{"type":"action_request_validation_exception","reason":"Validation Failed: 1: type is missing;"}],"type":"action_request_validation_exception","reason":"Validation Failed: 1: type is missing;"},"status":400} at org.elasticsearch.client.RestClient.convertResponse(RestClient.java:260) at org.elasticsearch.client.RestClient.access$900(RestClient.java:95) at org.elasticsearch.client.RestClient$1.completed(RestClient.java:305) ... 16 more

mohanvive commented 5 years ago

Above issue is encountered because latest siddhi-store-elaticsearch extensions can only works with elasticsearch 7.x.x and above. And there were no any previous releases that are based on Siddhi 5.x.x releases.

Hence, we have created a separate branch to maintain siddhi-store-elasticsearch extension which supports elasticsearch 6.x.x and based on Siddhi 5.x.x. This will be released as version 1.5.x ...