栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

8.2 SpringBoot集成ElasticSearch之新增文档

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

8.2 SpringBoot集成ElasticSearch之新增文档

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
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/351204.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号