我们可以使用新的 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()
方法,您需要传递:
- 一个JSON string
- 一个Map
- 一个Jackson serialized POJO
- 通过 provided helper
创建的对象
在你的情况下,我想第三个选项可能更有意义,因为你手头有一个 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);
我正在研究新的 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()
方法,您需要传递:
- 一个JSON string
- 一个Map
- 一个Jackson serialized POJO
- 通过 provided helper 创建的对象
在你的情况下,我想第三个选项可能更有意义,因为你手头有一个 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);