无法从Elastic 6.0获取数据:“error”:“Content-Type header [text / plain]不受支持”,“status”:406

时间:2018-01-21 06:44:55

标签: java elasticsearch

我在java中创建一个客户端,并希望从索引中获取查询结果但得到406错误: "不支持Content-Type标题[text / plain]"," status":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);

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

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

1 个答案:

答案 0 :(得分:2)

您只需为Content-type mime类型添加另一个application/json HTTP请求标头,因为您正在发送一些JSON,ES不再猜测您的内容类型:

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