Spring的数据弹性搜索_version,_id等的元数据注释

时间:2014-12-18 04:07:17

标签: java elasticsearch annotations spring-data-elasticsearch

使用@Id注释我可以向模型对象添加id字段,当我执行查询时,生成的模型对象将包含_id中{的弹性搜索值@Id {1}}带注释的字段。

但是,我还没有弄清楚如何获取其他文档元数据,例如_version。我尝试在模型中添加version字段,并使用@Version注释对其进行注释,但没有任何结果,字段仍为null

{
    "_index" : "twitter",
    "_type" : "tweet",
    "_id" : "1",
    "_version" : 1,
    "found": true,
    "_source" : {
        "user" : "kimchy",
        "postDate" : "2009-11-15T14:12:12",
        "message" : "trying out Elasticsearch"
    }
}

我指的是_index_type_id_version等字段......

我特别关注_version,因为它用于乐观锁定。

在我看来,如果支持_id,则应该以某种方式支持_version和其他元数据字段。

我刚读过spring-data-elasticsearch文档而我找不到任何东西。如果有人知道,请告知。

spring-data-elasticsearch是否支持所有elasticsearch文档元数据字段?如果是这样,怎么样?

此外,如果我能以某种方式获得_version,那么在使用spring-data-elasticsearch时如何将其用于乐观锁定?

感谢。

1 个答案:

答案 0 :(得分:1)

我可以说,你要求的东西不存在。然而,没有真正的能力来证明这一点。我确实找到了Spring-data-elasticsearch的注释列表:

http://docs.spring.io/spring-data/elasticsearch/docs/current/api/org/springframework/data/elasticsearch/annotations/package-tree.html

@id和@version都不在该列表中。

我可以找到其他具有@version注释但却不是Spring-data-elasticsearch的内容。

如果你只是在谈论Spring-Data我会指出你:

http://docs.spring.io/spring-data/commons/docs/current/api/org/springframework/data/annotation/Version.html

  

org.springframework.data.annotation

     

注释类型版本

     

@Documented @Retention(value = RUNTIME)

     

@Target(value = {FIELD,METHOD,ANNOTATION_TYPE})public @interface

     

Version划定要用作版本字段的属性,以对实体实施乐观锁定。

     

自:1.5

     

作者:Patryk Wasik,Oliver Gierke

以下是使用它的一些代码的链接:

http://hantsy.blogspot.com/2013/10/spring-data-new-perspective-of-data.html

不确定这是不是你想要的,但是我能尽可能接近。这是为了乐观锁定。