Hi Sandeep The error is : {"error":{"root_cause":[{"type":"action_request_validation_exception","reason":"Validation Failed: 1: no requests added;"}],"type":"action_request_validation_exception","reason":"Validation Failed: 1: no requests added;"},"status":400}
I don't find how to rewrite rules. Best Rabii Le ven. 5 oct. 2018 à 18:53, Sandeep Moré <moresand...@gmail.com> a écrit : > When you say it does not work what error do you get ? do you see the > rewrite rules for header getting triggered in the debug logs ? > Also, what is the exception you get on the elasticsearch side. > > Best, > Sandeep > > On Fri, Oct 5, 2018 at 11:23 AM rabii lamriq <lam...@gmail.com> wrote: > >> Hi All, >> >> I tried to change the content-type of the http header in the >> ElasticsearchDispatcher java class, but doesn't work :( >> >> Anyone can give help where we should change the content-type for make >> "application/x-ndjson" in class of ElasticsearchDispatcher (attached) >> >> Regards >> Rabii >> >> Le mar. 25 sept. 2018 à 16:20, rabii lamriq <lam...@gmail.com> a écrit : >> >>> I am not understand how to apply this for content-type. >>> >>> Le mar. 25 sept. 2018 à 15:18, Sandeep Moré <moresand...@gmail.com> a >>> écrit : >>> >>>> This is an example in Webhdfs service def. >>>> https://github.com/apache/knox/blob/6e7266ad3649e1804ee869afed04f79a71e48b7d/gateway-service-definitions/src/main/resources/services/webhdfs/2.4.0/rewrite.xml#L64 >>>> >>>> >>>> >>>> On Tue, Sep 25, 2018 at 5:37 AM rabii lamriq <lam...@gmail.com> wrote: >>>> >>>>> Hi Sandeep, >>>>> >>>>> Yes, I know that is possible, but I don't know how to rewrite the rule >>>>> to access to the header and change the Content-type, I can't find any >>>>> thing >>>>> related to this customization. >>>>> >>>>> Regards >>>>> Rabii >>>>> >>>>> Le lun. 24 sept. 2018 à 17:19, Sandeep Moré <moresand...@gmail.com> a >>>>> écrit : >>>>> >>>>>> Yes, you can use the rewrite rules to update Headers, I don't >>>>>> remember exactly which service uses it but there should be few services >>>>>> that rewrite headers. >>>>>> >>>>>> Best, >>>>>> Sandeep >>>>>> >>>>>> On Mon, Sep 24, 2018 at 10:45 AM rabii lamriq <lam...@gmail.com> >>>>>> wrote: >>>>>> >>>>>>> >>>>>>> Rewrite rules for knox (link >>>>>>> <https://cwiki.apache.org/confluence/display/KNOX/2017/08/14/Understanding+Rewrite+Rules+for+Apache+Knox#UnderstandingRewriteRulesforApacheKnox-JSONURLRewriteFIlter>) >>>>>>> can help me to change header? is it possible? >>>>>>> >>>>>>> Le lun. 24 sept. 2018 à 16:43, rabii lamriq <lam...@gmail.com> a >>>>>>> écrit : >>>>>>> >>>>>>>> Hello >>>>>>>> >>>>>>>> Any help please?? >>>>>>>> >>>>>>>> Le lun. 24 sept. 2018 à 09:31, rabii lamriq <lam...@gmail.com> a >>>>>>>> écrit : >>>>>>>> >>>>>>>>> Hi, >>>>>>>>> >>>>>>>>> thanks every One, for your feedbacks, >>>>>>>>> >>>>>>>>> Yes, ES accept both application/json and application/x-ndjson, >>>>>>>>> there is no problem in ES ni in Grafana, when i test my query with >>>>>>>>> curl to >>>>>>>>> send POST to ES, it work well ether json or x-ndjson. >>>>>>>>> >>>>>>>>> However, through Knox Gateway, it work only for x-ndjson, I don't >>>>>>>>> know why. so, since Grafana send their POST with only json and not >>>>>>>>> x-ndjson, the scenario of Grafana -> Knox -> ES with multi search >>>>>>>>> doesn't >>>>>>>>> work. >>>>>>>>> >>>>>>>>> I think we have two solution: >>>>>>>>> >>>>>>>>> 1- make some thing to force Grafana change header of POST and put >>>>>>>>> x-ndjson instead of json, or >>>>>>>>> 2- rewrite Header by Knox to forwarded with x-ndjson to ES. >>>>>>>>> >>>>>>>>> If some one have any idea of how to make this or other solution. >>>>>>>>> >>>>>>>>> >>>>>>>>> Regards >>>>>>>>> Rabii >>>>>>>>> >>>>>>>>> Le ven. 21 sept. 2018 à 19:21, Kevin Risden <kris...@apache.org> >>>>>>>>> a écrit : >>>>>>>>> >>>>>>>>>> https://github.com/elastic/elasticsearch/issues/25718 >>>>>>>>>> >>>>>>>>>> Elasticsearch endpoints should take both application/json and >>>>>>>>>> application/x-ndjson. There might be something else going on here. >>>>>>>>>> That is >>>>>>>>>> why I asked for the Elasticsearch logs. >>>>>>>>>> >>>>>>>>>> It might not be necessary to rewrite the content type. >>>>>>>>>> >>>>>>>>>> Kevin Risden >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> On Fri, Sep 21, 2018 at 1:17 PM rabii lamriq <lam...@gmail.com> >>>>>>>>>> wrote: >>>>>>>>>> >>>>>>>>>>> Hi all, >>>>>>>>>>> >>>>>>>>>>> My problem is how to change the content-type=application/json to >>>>>>>>>>> application/x-ndjson by rewriting the header in the knox. >>>>>>>>>>> >>>>>>>>>>> Because grafana send their query with content-type=application/json >>>>>>>>>>> and knox return status 400, >>>>>>>>>>> >>>>>>>>>>> Hower when i reproduce the problem by curl comande, I noticed >>>>>>>>>>> that if i replace json by x-ndjson through knox it wirk well. >>>>>>>>>>> >>>>>>>>>>> Sence i can't change the content-type in grafana, is this >>>>>>>>>>> possible by rewriting the header in knox to replace json by >>>>>>>>>>> x-ndjson. >>>>>>>>>>> >>>>>>>>>>> Regards >>>>>>>>>>> Rabii >>>>>>>>>>> >>>>>>>>>>> Le ven. 21 sept. 2018 à 18:05, >>>>>>>>>>> Kevin Risden >>>>>>>>>>> <kris...@apache.org> a écrit : >>>>>>>>>>> >>>>>>>>>>>> Do you have the error from Elasticsearch logs? It might explain >>>>>>>>>>>> if Knox or Grafana is sending a bad request. >>>>>>>>>>>> >>>>>>>>>>>> Kevin Risden >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> On Fri, Sep 21, 2018 at 12:03 PM Sandeep Moré < >>>>>>>>>>>> moresand...@gmail.com> wrote: >>>>>>>>>>>> >>>>>>>>>>>>> I don't see any issues from Knox side, what error do you see >>>>>>>>>>>>> in Grafana ? I think this could be because Grafana is expecting >>>>>>>>>>>>> certain >>>>>>>>>>>>> content-type. >>>>>>>>>>>>> >>>>>>>>>>>>> On Fri, Sep 21, 2018 at 11:37 AM rabii lamriq < >>>>>>>>>>>>> lam...@gmail.com> wrote: >>>>>>>>>>>>> >>>>>>>>>>>>>> Hi Sandeep >>>>>>>>>>>>>> >>>>>>>>>>>>>> thanks for your feedback, below is the deboug log for this >>>>>>>>>>>>>> curl >>>>>>>>>>>>>> >>>>>>>>>>>>>> 2018-09-18 17:23:23,154 DEBUG hadoop.gateway >>>>>>>>>>>>>> (UrlRewriteProcessor.java:rewrite(166)) - Rewrote URL: >>>>>>>>>>>>>> https://<host-knox>:8443/gateway/default/es5/<index_name>/_msearch, >>>>>>>>>>>>>> direction: IN via explicit rule: ES5/inbound/query to URL: >>>>>>>>>>>>>> http:// >>>>>>>>>>>>>> <host-elast>:9200/<index_name>/_msearch >>>>>>>>>>>>>> 2018-09-18 17:23:23,156 DEBUG hadoop.gateway >>>>>>>>>>>>>> (ElasticsearchDispatch.java:executeOutboundRequest(79)) - >>>>>>>>>>>>>> Dispatch request: >>>>>>>>>>>>>> POST http:// >>>>>>>>>>>>>> <host-elast>:9200/<index_name>/_msearch?doAs=<u_user> >>>>>>>>>>>>>> 2018-09-18 17:23:23,193 DEBUG hadoop.gateway >>>>>>>>>>>>>> (ElasticsearchDispatch.java:executeOutboundRequest(95)) - >>>>>>>>>>>>>> Dispatch response >>>>>>>>>>>>>> status: 400 >>>>>>>>>>>>>> 2018-09-18 17:23:23,194 DEBUG hadoop.gateway >>>>>>>>>>>>>> (DefaultDispatch.java:getInboundResponseContentType(202)) - >>>>>>>>>>>>>> Using explicit >>>>>>>>>>>>>> character set UTF-8 for entity of type application/json >>>>>>>>>>>>>> 2018-09-18 17:23:23,195 DEBUG hadoop.gateway >>>>>>>>>>>>>> (DefaultDispatch.java:getInboundResponseContentType(210)) - >>>>>>>>>>>>>> Inbound >>>>>>>>>>>>>> response entity content type: application/json; charset=UTF-8 >>>>>>>>>>>>>> 2018-09-18 17:23:54,519 DEBUG hadoop.gateway >>>>>>>>>>>>>> (GatewayFilter.java:doFilter(116)) - Received request: POST >>>>>>>>>>>>>> /es5/<index_name>/_msearch >>>>>>>>>>>>>> 2018-09-18 17:23:54,521 INFO hadoop.gateway >>>>>>>>>>>>>> (AclsAuthorizationFilter.java:doFilter(85)) - Access Granted: >>>>>>>>>>>>>> true >>>>>>>>>>>>>> >>>>>>>>>>>>>> Regards >>>>>>>>>>>>>> Rabii >>>>>>>>>>>>>> >>>>>>>>>>>>>> Le ven. 21 sept. 2018 à 17:17, Sandeep Moré < >>>>>>>>>>>>>> moresand...@gmail.com> a écrit : >>>>>>>>>>>>>> >>>>>>>>>>>>>>> Hello Rab, >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Interesting, do you have the debug logs for this ? they will >>>>>>>>>>>>>>> tell us exactly what is happening. >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Best, >>>>>>>>>>>>>>> Sandeep >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> On Fri, Sep 21, 2018 at 9:56 AM rabii lamriq < >>>>>>>>>>>>>>> lam...@gmail.com> wrote: >>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Hi All, >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> From Grafana, I Post multisearch query to Elasticsearch >>>>>>>>>>>>>>>> using the bulk API with the newline delimited JSON (NDJSON) >>>>>>>>>>>>>>>> format. >>>>>>>>>>>>>>>> https://www.elastic.co/guide/en/elasticsearch/reference/current/search-multi-search.html >>>>>>>>>>>>>>>> like this: >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> curl -u myuser -i -H “Content-Type: application/json” >>>>>>>>>>>>>>>> -XPOST "http://host_ES:900/index/_msearch" --data-binary ’ >>>>>>>>>>>>>>>> { first json doc} >>>>>>>>>>>>>>>> {second json doc} >>>>>>>>>>>>>>>> ’ >>>>>>>>>>>>>>>> when bypassing Knox, The query work well either we made >>>>>>>>>>>>>>>> json or x-ndjson, >>>>>>>>>>>>>>>> However, through Knox gateway, if the >>>>>>>>>>>>>>>> content-type=application/json, the query retun this error of >>>>>>>>>>>>>>>> 400: >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> HTTP/1.1 400 Bad Request >>>>>>>>>>>>>>>> content-type: application/json >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> But when we replace json by x-ndjson like mentioned in the >>>>>>>>>>>>>>>> bulk API, it work well. >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> My problem is that Grafana send their query with the >>>>>>>>>>>>>>>> content-type=application/json and not x-ndjson, for this, it >>>>>>>>>>>>>>>> is possible to >>>>>>>>>>>>>>>> make any thing on Knox to solve this problem? >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Regards >>>>>>>>>>>>>>>> Rab >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>