ElasticSearch:不建议在批量请求中指定类型

时间:2019-06-02 22:53:13

标签: java elasticsearch

我收到警告:

"[types removal] Specifying types in bulk requests is deprecated."]

我做错了什么?这是我的代码:

    BulkRequest request = new BulkRequest();

    for(Item item : items) {
        IndexRequest indexRequest = new IndexRequest(INDEX_NAME, DOC_TYPE, item.getIdentifier());
        indexRequest
                .opType(DocWriteRequest.OpType.INDEX) // Index the source. If there an existing document with the id, it will be replaced.
                .source(JsonUtility.toJson(item), XContentType.JSON);

        request.add(indexRequest);
    }

    elastic.bulk(request, RequestOptions.DEFAULT);

2 个答案:

答案 0 :(得分:0)

Elasticsearch 7 removed type

您的问题中没有提到Elasticsearch版本,但您可以阅读有关schedule for removal of mapping types的更多信息,并做出相应的反应。

答案 1 :(得分:0)

我认为您正在使用 7.X 版本,问题是您创建的 IndexRequest 正在构建 POST 方法的 URL 以在 ElasticSearch 中搜索,类似于:

  • http://localhost:9200/INDEX_NAME_identifier/DOC_TYPE/_search

其中标识符是用于在搜索中进行区分的属性。在 ElasticSearch 7 中,指定搜索请求中的类型已被弃用,URL 应该类似于:

  • http://localhost:9200/INDEX_NAME_identifier/_search

虽然很难知道因为你没有指定版本,但我认为你代码中的 elasticsearch 库比 7.X 旧,如果你将其更新为 7,则 DOC_TYPE 参数可能会在构造函数中消失。