1.连接集群
首先在项目目录“/src/main/java/com/example/es”下新建common目录,并在common目录下新建SampleClusterRouterProvider类,具体代码如下。
@AutoService(ClusterRouterProvider.class)
public class SampleClusterRouterProvider implements ClusterRouterProvider {
public static final String SAMPLE_CLUSTER_NAME = "sampleCluster";
@Override
public ClusterRouter getClusterRouter(String name) {
if (SAMPLE_CLUSTER_NAME.equalsIgnoreCase(name)) {
Cluster cluster = Cluster.simple("127.0.0.1", 9200, Credentials.basic("admin", "123456"));
ClusterRouter clusterRouter = ClusterRouter.single(cluster);
return clusterRouter;
} else {
return null;
}
}
}
然后再新建EsConfig类,具体代码如下。
@Configuration
@EnableEasyMapper(basePackages = "com.example.es.mapper")
public class EsConfig {
@Bean(destroyMethod = "close")
public ClusterRouter clusterRouter() {
return ClusterRouter.localhost();
}
}
2.po开发
在项目目录“/src/main/java/com/example/es”下新建po目录,并在po目录下新建Employee实体类,具体代码如下。
@Data
public class Employee {
@JsonProperty("name")
private String name;
@JsonProperty("age")
private Integer age;
@JsonProperty("birthday")
private String birthday;
@JsonProperty("job")
private String job;
@JsonProperty("salary")
private Float salary;
}
3.mapper开发
在项目目录“/src/main/java/com/example/es”下新建mapper目录,并在mapper目录下新建EmployeeMapper接口,具体代码如下。
@EasyMapper(indices = "employee", clusterRouter = "sampleCluster")
public interface EmployeeMapper {
@Index
Boolean indexEmployeeBoolean(Employee employee);
@Index
String indexEmployeeString(Employee employee);
@Index
void indexEmployeeVoid(Employee employee);
@Index
IndexResponse indexEmployeeIndexResponse(Employee employee);
@Index
RestStatus indexEmployeeRestStatus(Employee employee);
@Index
CompletableFuture indexEmployeeCompletableFuture(Employee employee);
@Index
CompletableFuture indexEmployeeFutureVoid(Employee employee);
}
4.controller开发
在项目目录“/src/main/java/com/example/es”下新建controller目录,并在controller目录下新建EmployeeController类,以indexEmployeeString接口为例演示开发步骤,具体代码如下。
@RestController
@RequestMapping("/employee")
public class EmployeeController {
@Resource
private EmployeeMapper employeeMapper;
@ResponseBody
@RequestMapping(value = "/indexEmployeeString", method = RequestMethod.POST)
public String indexEmployeeString(@RequestBody Employee employee) {
return employeeMapper.indexEmployeeString(employee);
}
}
5.测试
启动项目,然后在postman中请求“http://localhost:8080/employee/indexEmployeeString”,成功后返回文档id。
{
"name": "Mike Owen",
"age": 31,
"birthday":"1991-08-01",
"job":"CEO",
"salary":60000
}
qfuPv3wBpyKimLS2Ar_q
6.指定文档id新增
(1).入参实体需实现IdProvider接口
@Data
public class Employee implements IdProvider {
@JsonProperty("id")
private String id;
@JsonProperty("name")
private String name;
@JsonProperty("age")
private Integer age;
@JsonProperty("birthday")
private String birthday;
@JsonProperty("job")
private String job;
@JsonProperty("salary")
private Float salary;
@Override
public String getId() {
return id;
}
}
(2).测试
启动项目,然后在postman中请求“http://localhost:8080/employee/indexEmployeeString”,成功后返回文档id。
{
"id":"10001",
"name": "Mike Owen",
"age": 31,
"birthday":"1991-08-01",
"job":"CEO",
"salary":60000
}
10001



