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é <[email protected]> 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 <[email protected]> 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 <[email protected]> a écrit :
>>
>>> Hello
>>>
>>> Any help please??
>>>
>>> Le lun. 24 sept. 2018 à 09:31, rabii lamriq <[email protected]> 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 <[email protected]> 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 <[email protected]> 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
>>>>>> <[email protected]> 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é <[email protected]>
>>>>>>> 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 <[email protected]>
>>>>>>>> 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é <[email protected]>
>>>>>>>>> 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 <[email protected]>
>>>>>>>>>> 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