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

Reply via email to