无法从Elastic 6.0获取数据:“错误”:“不支持Content-Type标头[文本/纯文本]”,“状态”:406

Elv*_*lva 0 java elasticsearch

我在Java中创建了一个客户端,想从索引中获取查询结果,但收到406错误:“不支持Content-Type标头[text / plain]”,“状态”:406。

Java平台:1.6

ES版本:6.0

下面是代码片段:

  Client clientInstance = Client.create();
  clientInstance.addFilter(new HTTPBasicAuthFilter("", ""));
 WebResource webResource =
  clientInstance.resource("http://hostname:9200/indexname/_search");
ClientResponse response=webResource.entity(dsl).accept("application/json").get(ClientResponse.class); 
String result = response.getEntity(String.class);
Run Code Online (Sandbox Code Playgroud)

我在Kibana中使用dsl,可以获取正确的查询结果。但是它没有在Java中获得正确的响应并抛出406错误。

如何解决此问题?非常感谢!

Val*_*Val 5

您只需要Content-typeapplication/jsonmime类型添加另一个HTTP请求标头,因为您要发送一些JSON并且ES不再猜测您的内容类型:

ClientResponse response = webResource
    .entity(dsl)
    .header("Content-type", "application/json")       <--- add this 
    .accept("application/json")
    .get(ClientResponse.class); 
Run Code Online (Sandbox Code Playgroud)