【问题标题】:spring-data-elasticsearch entity removing deprecated typespring-data-elasticsearch 实体删除不推荐使用的类型
【发布时间】:2020-06-18 02:40:08
【问题描述】:

Elasticsearch 将在版本 8 中删除 _type。我正在使用 ElasticRepository 开发一个 Spring Boot 微服务,所以我想设置实体以便不使用它。据我所知,如果您没有在@Document 中隐式指定类型,它将采用小写的类名。 ¿如何指定不使用类型而不是 type = "_doc"?

弹性搜索:7.5.1 春季启动:2.2.1

package org.elastic.model;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.RequiredArgsConstructor;
import org.springframework.data.annotation.Id;
import org.springframework.data.elasticsearch.annotations.Document;

@NoArgsConstructor
@AllArgsConstructor
@Data
@Builder
@SuppressWarnings("unused")

@Document(indexName = "basic_data",type = "_doc")
public class BasicData {

    @Id
    private String id;
    private String field1;
    private String field2;
}

【问题讨论】:

  • 你检查过更新的 es8 的 java 客户端是否不能为你解决这个问题吗?

标签: spring-boot elasticsearch spring-data-elasticsearch


【解决方案1】:

Spring Boot 2.2.1 和相应的 Spring Data Elasticsearch 3.2.x 使用 Elasticsearch 6.8.5 库。您将无法将此版本与 Elasticsearch 7 集群一起使用,6.8 的客户端库与版本 7 中的服务器不兼容。

在今年春天发布的下一个 Spring Data Elasticsearch 版本中,目标 Elasticsearch 版本是 7.5(我将在接下来的几天内将其更新到 7.6)。我们已经弃用了用户放置类型信息的代码(例如在@Documentannotation 中),并且我们不再在对 Elasticsearch 的底层调用中使用它。所以暂时你可以把它留在注释中,以备下一个版本。

一旦 Elasticsearch 8 发布,我们下一个版本的 Spring Data Elasticsearch 将使用它,然后我们可能会从我们的代码中删除它以进行清理。

【讨论】:

  • 我的软件使用 Spring Data Elasticsearch 3.2.1、Elasticsearch 6.8.4 并从 Elasticsearch 7.5.1 读取。它似乎在认证环境中正常工作。我能找到什么问题?
  • 如果到目前为止您在使用 .8.4 客户端和 7 集群时都没有问题,那就太好了。我不能确切地告诉我们遇到了什么问题,但这些变化通常是在从结果或类似的东西中解析特殊字段时发生的(我说的是弹性搜索库中的进程)。有时他们甚至会在补丁级别版本中进行重大更改。
猜你喜欢
  • 2021-03-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-22
  • 2018-05-13
  • 1970-01-01
  • 2022-08-09
  • 1970-01-01
相关资源
最近更新 更多