当前位置:   article > 正文

8.3 SpringBoot集成ElasticSearch之删除文档_springboot 集成es8.3.3

springboot 集成es8.3.3

1.mapper开发
在项目目录“/src/main/java/com/example/es”的EmployeeMapper类中新增删除员工接口,具体代码如下。

@EasyMapper(indices = "employee", clusterRouter = "sampleCluster")
public interface EmployeeMapper {
    /**
     * 删除员工
     *
     * @param id 员工文档id
     * @return 删除成功,返回true
     */
    @Delete
    Boolean deleteEmployeeBoolean(String id);

    /**
     * 删除员工
     *
     * @param id 员工文档id
     */
    @Delete
    void deleteEmployeeVoid(String id);

    /**
     * 删除员工
     *
     * @param employeeEntity 员工
     * @return RestStatus
     */
    @Delete
    RestStatus deleteEmployee(EmployeeEntity employeeEntity);

    /**
     * 删除员工
     *
     * @param id 员工文档id
     * @return DeleteResponse
     */
    @Delete
    DeleteResponse deleteEmployeeDeleteResponse(String id);

    /**
     * 删除员工
     *
     * @param id 员工文档id
     * @return RestStatus
     */
    @Delete
    RestStatus deleteEmployee(String id);

    /**
     * 异步删除员工
     *
     * @param id 员工文档id
     * @return 异步结果
     */
    @Delete
    CompletableFuture<Boolean> deleteEmployeeBooleanFuture(String id);

    /**
     * 异步删除员工
     *
     * @param id 员工文档id
     * @return 异步结果
     */
    @Delete
    CompletableFuture<Void> deleteEmployeeVoidFuture(String id);
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64

2.controller开发
在项目目录“/src/main/java/com/example/es”下的EmployeeController类中新增删除员工接口,以deleteEmployee接口为例演示开发步骤,具体代码如下。

@RestController
@RequestMapping("/employee")
public class EmployeeController {
    @Resource
    private EmployeeMapper employeeMapper;

    @ResponseBody
    @RequestMapping(value = "/deleteEmployee", method = RequestMethod.DELETE)
    public RestStatus deleteEmployee(@RequestParam String id) {
        return employeeMapper.deleteEmployee(id);
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

3.测试
(1).文档id存在
启动项目,然后在postman中请求“http://localhost:8080/employee/deleteEmployee?id=10000009”,返回请求执行结果。

"OK"
  • 1

(2).文档id不存在
启动项目,然后在postman中请求“http://localhost:8080/employee/deleteEmployee?id=10000008”,返回请求执行结果。

"NOT_FOUND"
  • 1

4.@Delete属性说明

序号属性名默认值说明
1waitForActiveShards-2活动分片数量,-2时不指定分片数量,-1或all指定全部分片
2timeout1m数值+时间单位(ms/s/m/h/M/y)
3refreshPolicyRefreshPolicy.NONE默认不刷新

5.批量删除
(1).mapper开发
在项目目录“/src/main/java/com/example/es”的EmployeeMapper类中新增批量删除员工接口,具体代码如下。

@EasyMapper(indices = "employee", clusterRouter = "sampleCluster")
public interface EmployeeMapper {
	/**
     * 批量删除员工
     *
     * @param ids 员工文档id
     * @return 响应
     */
    @Bulk(bulkType = BulkType.DELETE)
    List<BulkItemResponse> bulkDeleteEmployeeList(String... ids);

    /**
     * 批量删除员工
     *
     * @param employeeEntityList 员工
     * @return 响应
     */
    @Bulk(bulkType = BulkType.DELETE)
    List<BulkItemResponse> bulkDeleteEmployeeList(List<EmployeeEntity> employeeEntityList);
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

(2).controller开发
在项目目录“/src/main/java/com/example/es”下的EmployeeController类中新增批量删除员工接口,以接口bulkDeleteEmployeeList为例演示开发步骤,具体代码如下。

@RestController
@RequestMapping("/employee")
public class EmployeeController {
    @Resource
    private EmployeeMapper employeeMapper;

    @ResponseBody
    @RequestMapping(value = "/bulkDeleteEmployeeList", method = RequestMethod.DELETE)
    public List<BulkItemResponse> bulkDeleteEmployeeList(@RequestBody List<EmployeeEntity> employeeConditionList) {
        return employeeMapper.bulkDeleteEmployeeList(employeeConditionList);
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

(3).测试
启动项目,然后在postman中请求“http://localhost:8080/employee/bulkDeleteEmployeeList”,成功后返回对应的信息。

[
  {
    "id": "10000011",
    "employeeId": 10000011,
    "name": "Stephen Curry",
    "job": "Java engineer",
    "age": 27,
    "salary": 20000.00,
    "birthday": "1995-08-06"
  },
  {
    "id": "10000012",
    "employeeId": 10000012,
    "name": "Stephen Curry",
    "job": "Java engineer",
    "age": 27,
    "salary": 20000.00,
    "birthday": "1995-08-06"
  }
]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
[
    {
        "id": "10000011",
        "opType": "DELETE",
        "response": {
            "shardInfo": {
                "total": 2,
                "successful": 1,
                "failures": [],
                "failed": 0,
                "fragment": false
            },
            "shardId": {
                "index": {
                    "name": "employee",
                    "uuid": "_na_",
                    "fragment": false
                },
                "id": -1,
                "indexName": "employee",
                "fragment": true
            },
            "id": "10000011",
            "type": "_doc",
            "version": 2,
            "seqNo": 5,
            "primaryTerm": 1,
            "result": "DELETED",
            "index": "employee",
            "fragment": false
        },
        "failure": null,
        "type": "_doc",
        "index": "employee",
        "version": 2,
        "failed": false,
        "itemId": 0,
        "failureMessage": null,
        "fragment": false
    },
    {
        "id": "10000012",
        "opType": "DELETE",
        "response": {
            "shardInfo": {
                "total": 2,
                "successful": 1,
                "failures": [],
                "failed": 0,
                "fragment": false
            },
            "shardId": {
                "index": {
                    "name": "employee",
                    "uuid": "_na_",
                    "fragment": false
                },
                "id": -1,
                "indexName": "employee",
                "fragment": true
            },
            "id": "10000012",
            "type": "_doc",
            "version": 2,
            "seqNo": 5,
            "primaryTerm": 1,
            "result": "DELETED",
            "index": "employee",
            "fragment": false
        },
        "failure": null,
        "type": "_doc",
        "index": "employee",
        "version": 2,
        "failed": false,
        "itemId": 1,
        "failureMessage": null,
        "fragment": false
    }
]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80

6.条件删除
(1).mapper开发
在项目目录“/src/main/java/com/example/es”的EmployeeMapper类中新增条件删除员工接口,具体代码如下。

@EasyMapper(indices = "employee", clusterRouter = "sampleCluster")
public interface EmployeeMapper {
	/**
     * 根据指定条件删除员工
     *
     * @param employeeCondition 查询条件
     * @return 查询删除响应
     */
    @DeleteByQuery
    BulkByScrollResponse deleteByQueryEmployee(EmployeeCondition employeeCondition);

    /**
     * 根据指定条件删除员工
     *
     * @param employeeCondition 查询条件
     * @return 异步查询删除响应
     */
    @DeleteByQuery
    CompletableFuture<BulkByScrollResponse> deleteByQueryEmployeeFuture(EmployeeCondition employeeCondition);
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

(2).controller开发
在项目目录“/src/main/java/com/example/es”下的EmployeeController类中新增条件删除员工接口,以接口deleteByQueryEmployee为例演示开发步骤,具体代码如下。

@RestController
@RequestMapping("/employee")
public class EmployeeController {
    @Resource
    private EmployeeMapper employeeMapper;

    @ResponseBody
    @RequestMapping(value = "/deleteByQueryEmployee", method = RequestMethod.DELETE)
    public BulkByScrollResponse deleteByQueryEmployee(@RequestBody EmployeeCondition employeeCondition) {
        return employeeMapper.deleteByQueryEmployee(employeeCondition);
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

(3).测试
启动项目,然后在postman中请求“http://localhost:8080/employee/deleteByQueryEmployee”,删除岗位为"Java engineer"并且薪水为29000的文档,成功后返回对应的信息。

{
	"job": "Java engineer",
	"salary": 29000.00
}
  • 1
  • 2
  • 3
  • 4
{
    "took": {
        "hours": 0,
        "minutes": 0,
        "seconds": 0,
        "millis": 18,
        "nanos": 18000000,
        "days": 0,
        "minutesFrac": 3.0E-4,
        "hoursFrac": 5.0E-6,
        "secondsFrac": 0.018,
        "microsFrac": 18000.0,
        "micros": 18000,
        "daysFrac": 2.0833333333333333E-7,
        "millisFrac": 18.0,
        "stringRep": "18ms"
    },
    "status": {
        "total": 1,
        "updated": 0,
        "created": 0,
        "deleted": 1,
        "batches": 1,
        "versionConflicts": 0,
        "noops": 0,
        "bulkRetries": 0,
        "searchRetries": 0,
        "throttled": {
            "hours": 0,
            "minutes": 0,
            "seconds": 0,
            "millis": 0,
            "nanos": 0,
            "days": 0,
            "minutesFrac": 0.0,
            "hoursFrac": 0.0,
            "secondsFrac": 0.0,
            "microsFrac": 0.0,
            "micros": 0,
            "daysFrac": 0.0,
            "millisFrac": 0.0,
            "stringRep": "0ms"
        },
        "requestsPerSecond": "Infinity",
        "reasonCancelled": null,
        "throttledUntil": {
            "hours": 0,
            "minutes": 0,
            "seconds": 0,
            "millis": 0,
            "nanos": 0,
            "days": 0,
            "minutesFrac": 0.0,
            "hoursFrac": 0.0,
            "secondsFrac": 0.0,
            "microsFrac": 0.0,
            "micros": 0,
            "daysFrac": 0.0,
            "millisFrac": 0.0,
            "stringRep": "0ms"
        },
        "sliceStatuses": [],
        "writeableName": "bulk-by-scroll",
        "fragment": false,
        "successfullyProcessed": 1
    },
    "bulkFailures": [],
    "searchFailures": [],
    "timedOut": false,
    "total": 1,
    "bulkRetries": 0,
    "created": 0,
    "deleted": 1,
    "updated": 0,
    "batches": 1,
    "noops": 0,
    "reasonCancelled": null,
    "versionConflicts": 0,
    "searchRetries": 0,
    "fragment": true
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81

(4).@DeleteByQuery属性说明

序号属性名默认值说明
1routing可选默认无路由
2waitForActiveShards-2活动分片数量,-2时不指定分片数量,-1或all指定全部分片
3timeout1m数值+时间单位(ms/s/m/h/M/y)
4refreshfalse
5maxDocs-1最大处理文档数,超过此文档数量,就不在处理。默认-1,是全部文档
6batchSize1000批量大小
7conflictsabort冲突策略:abort/procced
8slices1分片
9maxRetries11冲突后,最大重试次数
10shouldStoreResultfalse
11scrollKeepAlive0
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/68830
推荐阅读
相关标签
  

闽ICP备14008679号