如何使用 spring-data-elasticsearch 从搜索结果中获取版本

How to fetch version from search results using spring-data-elasticsearch

我正在Springframework中执行NativeSearchQuery来执行搜索操作。我正在尝试通过 Java API 从响应中获取“_version”值。以下是与此用例相关的示例请求和响应

GET /my-index/_doc/foo-bar

{
  "_index" : "my-index",
  "_type" : "_doc",
  "_id" : "foo-bar",
  "_version" : 88,
  "_seq_no" : 169,
  "_primary_term" : 1,
  "found" : true,
  "_source" : {
    "_class" : "fooBar",
    "value" : 1250087,
    "creatdDateTime" : "20210203T124928.913Z",
    "ModifiedDateTime" : "20210203T124928.913Z"
  }
}

我正在尝试使用 NativeSearchQuery 通过 JAVA API 从上面的响应中获取 _version=88。如何获取这个值

在请求级别,您无需执行任何操作,因为 _version 字段来自搜索查询 always returned

响应中出现的每个搜索命中都将是 transformed to a Document instance,如果 _version 值 >= 0,则将在文档实例上设置版本值。

然后 NativeSearchQuery.search() 方法将 return SearchHits 的实例,其中包含 SearchHit 的数组,并且 class 提供 getVersion() method

当使用 Spring Data Elasticsearch 时,您需要有一个 Long 类型的 属性 并用 @Version 注释。 Spring Data Elasticsearch 然后将使用版本值填充此 属性。