定义一个泛型方法, 传入不同的对象, 泛型方法可以根据泛型参数序列化对象并上传es
时间: 2024-01-07 20:05:03 浏览: 34
好的,以下是一个示例代码:
```java
import com.fasterxml.jackson.databind.ObjectMapper;
import org.elasticsearch.action.index.IndexRequest;
import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.common.xcontent.XContentType;
import java.io.IOException;
public class ESUploader {
private RestHighLevelClient client;
private ObjectMapper objectMapper;
public ESUploader(RestHighLevelClient client) {
this.client = client;
this.objectMapper = new ObjectMapper();
}
public <T> void uploadToES(T object, String index, String id) throws IOException {
byte[] json = objectMapper.writeValueAsBytes(object);
IndexRequest indexRequest = new IndexRequest(index).id(id).source(json, XContentType.JSON);
client.index(indexRequest);
}
}
```
在这个示例代码中,我们定义了一个泛型方法 `uploadToES`,它接受三个参数:要上传的对象 `object`、要上传到的 ES 索引 `index` 和该对象在 ES 中的 ID `id`。
在方法内部,我们使用 Jackson 的 `ObjectMapper` 将对象序列化为 JSON 字节数组,然后使用 ES 的 Java 高级客户端将其上传到指定的索引中。由于泛型的存在,我们可以传入任何类型的对象,并且该方法会自动将其序列化并上传到 ES 中。