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 >>>>>> >>>>>