我们可以使用新的 REST 客户端将 Java Pojo 传递给 Elasticsearch Index API

Can we pass Java Pojo to Elasticsearch Index API using new REST Client

我正在研究新的 Elasticsearch 的 Java REST 客户端,并寻找索引文档的不同方法(此处 https://www.elastic.co/guide/en/elasticsearch/client/java-rest/7.3/java-rest-high-document-index.html

是否可以将我的 Java Pojo 传递给 Index?喜欢关注

IndexRequest request = new IndexRequest("posts"); 
request.id("1"); 
request.source(new User("1", "Foo", 22, new Date()));
IndexResponse indexResponse = client.index(request, RequestOptions.DEFAULT);

不,您不能将 POJO 直接传递给 IndexRequest.source() 方法,您需要传递:

  1. 一个JSON string
  2. 一个Map
  3. 一个Jackson serialized POJO
  4. 通过 provided helper
  5. 创建的对象

在你的情况下,我想第三个选项可能更有意义,因为你手头有一个 POJO。

如果您使用的是 RestHighLevelClient 版本 7.x,您可以传递一个具有简单映射的 POJO,例如:

IndexRequest request = new IndexRequest("posts");
request.id("1");
request.source(new ObjectMapper().writeValueAsString(new User("1", "Foo", 22, new Date())), XContentType.JSON);
IndexResponse indexResponse = client.index(request, RequestOptions.DEFAULT);