Spring Data Elasticsearch ID与_id

wxkevin:

我正在将Elastic Data 2.2.0与Spring Data Elasticsearch 2.0.1一起使用。

我的DAO类似于:

import org.springframework.data.annotation.Id;
import org.springframework.data.elasticsearch.annotations.Document;    

@Document(indexName = "myIndex")
public class MyDao {
    @Id
    private String id;

    public String getId() { return id; }
    public void setId(String id) { this.id = id; }

    <other fields, setters, getters omitted>
}

使用存储库将对象保存到ES,_id可以正确填充元数据字段。id字段的getter和setter方法正确返回_id元数据字段的值但是该字段中的id _source字段为null。

2个问题:1)为什么id字段为null?2)id字段为null是否重要?

值:

既然你让ES生成自己的标识,也就是你永远调用MyDao.setId("abcdxyz")_source可以不必在值id字段。

发生的事情是,如果您生成自己的ID并调用setId("yourid"),那么Spring Data ES将使用它作为_id文档的值,并将该值保留在_source.id字段中。这意味着_source.id不会为空。

如果您不致电setId()_source.id则将为null,ES会生成自己的ID。当您调用时getId(),Spring Data ES将确保返回该_id字段的值,而不是返回该字段的值,_source.id因为字段带有注释@Id

要回答第二个问题,该_source.id字段为null 没关系……只要您不需要引用它即可。当将JSON文档映射到Java实体时,即使idES中的基础字段为null ,Spring Data ES也会始终填充它

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

_source内的Spring Data Elasticsearch映射ID命名字段

Spring Data Elasticsearch(4.x)-使用@Id强制_source中的id字段

Spring Data Elasticsearch @Id for Logstash Records from Spring Boot (logstash-logback-encoder)

在spring-data-elasticsearch中使用ElasticsearchTemplate获取计数和ID列表

不是为Spring Data Elasticsearch中的Long类型而是为String类型字段自动生成id

FieldNamingStrategy 与 Spring Data Elasticsearch

Spring Data Elasticsearch是否支持Amazon Elasticsearch?

Java和Spring Data Elasticsearch的Elasticsearch分页

Spring Data Elasticsearch的ElasticsearchTemplate与ElasticsearchRepository

Spring Data Elasticsearch查询合并

如何使Spring Data Couchbase保留id字段?

使用 HashID 的 Spring Data Rest ID 转换

Spring Data-存储库Bean ID

Spring data jpa 在 id 字段之间查找

从Spring Data JpaRepository返回@id字段

嵌套对象的Spring Data Elasticsearch查询数组

Spring Data Elasticsearch-如何使用ElasticsearchRestTemplate?

elasticsearch,spring-data和hibernate

Spring Data Reactive Elasticsearch错误/警告

如何使用Spring Data从elasticsearch读取文档?

Spring Data Elasticsearch 通配符查询与排序

通过JSON结构查询Spring Data Elasticsearch

Spring Data Elasticsearch是否支持反应模型?

Spring Data Elasticsearch设置注释未生效

哪些版本的Spring Data Elasticsearch支持特定版本的Elasticsearch?

Elasticsearch 检索 ID 列表

在Elasticsearch中更改ID

Elasticsearch _id 搜索

ElasticSearch获取_id