有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java无法将unicode字符发布到ElasticSearch,它们显示为问号

我正在将电子邮件存储到ElasticSearch,但只要它们的字符不是来自iso拉丁语,比如“コニカミノルタ“,它们被改为?在ES中:

          "content": """

???????
?? ?

?????????????????

我使用以下代码发布到ES:

HttpPost post = new HttpPost(url);
try {
    // set import date
    doc.setImportTimestamp(new Date());
    // convert item to json string
    post.setEntity(new StringEntity(JsonUtils.toJson(doc)));

    // index
    post.setHeader("Content-Type", "application/json; charset=UTF-8");
    // perform http post
    LOG.info("Index doc to " + url);
    LOG.info("JSON : [" + JsonUtils.toJson(doc) + "]");
    try (CloseableHttpResponse res = httpClient.execute(post)) {
        LOG.debug(IOUtils.toString(res.getEntity().getContent(), StandardCharsets.UTF_8));
    }

这是发布前JSON对象中的字符串:

> "content": "コニカミノルタ\r\n宮脇 様\r\n\r\nいつも大変お世話になっております。\r\n\r\n今回表示されたエラーを教えていただけますでしょうか。\r\nスクリーンショットをお送りいただけますと情報として問題解決にとても\r\n助かります。\r\n\r\n検証会議につきまして、明日でも宜しければ参加をさせていただきます。\r\nお手数ですが、それまでに先ほどお送りしました証明書の追加作業が\r\n御社IT部門の方にて適用されていることをご確認いただけましたら幸甚です。\r\n\r\nご連絡をお待ちしております。\r\n\r\nどうぞよろしくお願い致します。\r\n\r\n山本

美奈子\r\nMinako Yamamoto\r\nWeb Support APAC \r\nUnified Communications Services\r\nAU +612 8295 9015 / 1800 766 770 \r\nHK 800 964 180\r\nIN 1800 3010 3990 \r\nJP 0120300532\r\nKR 0808080501\r\nSG 800 616 \r\ne WebSupport-APAC@west.com \r\nwestuc.com\r\n\r\n\r\n\r\n--------------------------------------------------------------------------------------\r\n",

欢迎任何帮助

谢谢

劳尔


共 (0) 个答案