使用 JEST 写入 Elasticsearch 7.3 - 无效的 POST 方法

eth*_*nny 1 java elasticsearch

我一直在尝试使用 JEST api 将一些信息写入工作的 elasticsearch 7.3 集群。一些资源:

遇到了这个错误消息:

uri [/my_index] 和方法 [POST] 的 HTTP 方法不正确,允许:[GET、DELETE、PUT、HEAD]

我发送的数据如下:

    // write directly to elastic
    Map<String, Object>infoMap = new LinkedHashMap();
    lagInfoMap.put("type", "consumer");
    lagInfoMap.put("topicval", topic);
    lagInfoMap.put("groupval", group);
    lagInfoMap.put("sumval", sumLag);

    try {
        jestResult = jestClient.execute(new Index.Builder(infoMap).index("my_index").build());
        if(!jestResult.isSucceeded()) {
            LOGGER.error(jestResult.toString());
        }
    } catch(IOException ioe) {
        LOGGER.error("Unable to write to elastic", ioe);
        return false;
    }
Run Code Online (Sandbox Code Playgroud)

似乎它需要一个 PUT 请求,但从文档(或我能找到的任何示例)中不清楚如何修改执行方法来执行此操作。

Ami*_*wal 5

几天前我也遇到了同样的问题,最终放弃了使用JEST for elasticsearch 7.3 的想法,从他们的 Github 页面来看,它看起来不像他们的最新版本 6.3.1 https://github.com/searchbox -io/Jest/releases,与 elasticsearch 7.X 不兼容。

Elasticsearch 7.X 使用PUTHTTP 方法来索引文档,而早期版本则使用该POST方法,因此会出现以下异常。

uri [/my_index] 和方法 [POST] 的 HTTP 方法不正确,允许:[GET、DELETE、PUT、HEAD]

我建议您使用elasticsearch官方高级java客户端,而不是JEST,这是由elasticsearch背后的elastic公司正在开发的活动。