首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >elastic search not x内容异常

elastic search not x内容异常
EN

Stack Overflow用户
提问于 2016-03-02 15:02:37
回答 4查看 14.1K关注 0票数 8

我一直在尝试使用以下代码通过java将数据放入elastic search:

代码语言:javascript
复制
String url = "http://localhost:9200/testindex2/test/2";
    HttpClient client = new DefaultHttpClient();

    HttpPut put = new HttpPut(url);
    JSONObject json = new JSONObject();

    json.put("email", "abc@abof.com");
    json.put("first_name", "abc");
    StringEntity se = new StringEntity("JSON: " + json.toString());
    se.setContentEncoding(new BasicHeader(HTTP.CONTENT_TYPE,"Text"));
    put.setEntity(se);

    HttpResponse response = client.execute(put);
    System.out.println("\nSending 'PUT' request to URL : " + url);
    System.out.println("Put parameters : " + put.getEntity());
    System.out.println("Response Code : " + response.getStatusLine().getStatusCode());

   BufferedReader rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));

    StringBuffer result = new StringBuffer();
    String line = "";
    while ((line = rd.readLine()) != null) {
        result.append(line);
    }

    System.out.println(result.toString());

我得到了以下错误:

发送' Put‘请求到URL:http://localhost:9200/testindex2/test/2 Put参数: Content-Type: text/;字符集=ISO-8859-1,Content- Encoding:文本,Content-Length: 52,Chunked: false Response Code : 400 {"error":{"root_cause":{"type":"mapper_parsing_exception",“reason”:“解析失败”},"type":"mapper_parsing_exception",“reason”:“解析失败”,"caused_by":{"type":"not_x_content_exception",“reason”:“压缩器检测只能在部分xcontent字节或压缩的xcontent字节上调用”}},"status":400}

而且,当我从rest客户端尝试相同的代码时,它运行得很好,我不确定为什么会发生这个问题。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2016-03-02 17:55:49

已替换

代码语言:javascript
复制
 StringEntity se = new StringEntity("JSON: " + json.toString());
se.setContentEncoding(new BasicHeader(HTTP.CONTENT_TYPE,"Text"));

有了这个:

代码语言:javascript
复制
StringEntity se = new StringEntity(json.toString(),ContentType.APPLICATION_JSON);

现在它已经开始工作了

票数 3
EN

Stack Overflow用户

发布于 2016-03-02 17:23:16

Elastic search有专门的client来与Java协同工作。而且您不需要手动生成JSON。此外,您没有描述导入部分,所以很难理解您使用的是什么库。

票数 1
EN

Stack Overflow用户

发布于 2018-10-19 06:50:12

我得到了同样的错误,但在我的例子中,我实际上是在一个初始化容器的Kubernetes配置中做类似这样的事情:

代码语言:javascript
复制
- args:
        - -XPUT
        - -k
        - {{.Values.kibana.env.ELASTICSEARCH_URL}}/.logtrail/config/1?pretty
        - -H
        - 'Content-Type: application/json'
        - --data
        - /etc/logtrail/logtrail.json

这里的问题是,当您在curl POST/PUT中指定一个文件时,它需要附加'@‘。所以下面的配置起作用了!

代码语言:javascript
复制
- args:
        - -XPUT
        - -k
        - {{.Values.kibana.env.ELASTICSEARCH_URL}}/.logtrail/config/1?pretty
        - -H
        - 'Content-Type: application/json'
        - --data
        - '@/etc/logtrail/logtrail.json'
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35740531

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档