1.entity開發
在專案目錄“/src/main/java/com/example/es”下新建entity目錄,并在entity目錄下新建EmployeeEntity物體類,具體代碼如下,
@Data
public class EmployeeEntity {
@JsonProperty("employeeId")
private String employeeId;
@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;
}
2.mapper開發
在專案目錄“/src/main/java/com/example/es”下新建mapper目錄,并在mapper目錄下新建EmployeeMapper介面,具體代碼如下,
@EasyMapper(indices = "employee", clusterRouter = "sampleCluster")
public interface EmployeeMapper {
/**
* 新建一名員工
*
* @param employeeEntity 員工
* @return 新建成功,回傳true
*/
@Index
Boolean indexEmployeeBoolean(EmployeeEntity employeeEntity);
/**
* 新建一名員工
*
* @param employeeEntity 員工
* @return 新建成功,回傳檔案id
*/
@Index
String indexEmployeeString(EmployeeEntity employeeEntity);
/**
* 新建一名員工
*
* @param employeeEntity 員工
*/
@Index
void indexEmployeeVoid(EmployeeEntity employeeEntity);
/**
* 新建一名員工
*
* @param employeeEntity 員工
* @return 新建成功,回傳檔案IndexResponse
*/
@Index
IndexResponse indexEmployeeIndexResponse(EmployeeEntity employeeEntity);
/**
* 新建一名員工
*
* @param employeeEntity 員工
* @return 新建成功,回傳RestStatus狀態碼
*/
@Index
RestStatus indexEmployeeRestStatus(EmployeeEntity employeeEntity);
/**
* 新建一名員工
*
* @param employeeEntity 員工
* @return 新建成功,回傳異步RestStatus狀態碼
*/
@Index
CompletableFuture<RestStatus> indexEmployeeCompletableFuture(EmployeeEntity employeeEntity);
/**
* 新建一名員工
*
* @param employeeEntity 員工
* @return 新建成功,回傳異步結果
*/
@Index
CompletableFuture<Void> indexEmployeeFutureVoid(EmployeeEntity employeeEntity);
}
3.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 EmployeeCondition employeeCondition) {
return employeeMapper.indexEmployeeString(employeeCondition);
}
}
4.測驗
啟動專案,然后在postman中請求“http://localhost:8080/employee/indexEmployeeString”,成功后回傳檔案id,
{
"employeeId":10000008,
"name": "Damian Lillard",
"job": "Vue engineer",
"age": 25,
"salary": 18000.00,
"birthday": "1996-10-01"
}
qfuPv3wBpyKimLS2Ar_q
5.@Index屬性說明
| 序號 | 屬性名 | 默認值 | 說明 |
|---|---|---|---|
| 1 | timeout | 1m | 數值+時間單位(ms/s/m/h/M/y) |
| 2 | refreshPolicy | RefreshPolicy.NONE | 默認不重繪 |
| 3 | pipeline | 可選 | |
| 4 | versionType | VersionType.INTERNAL | |
| 5 | waitForActiveShards | -2 | 活動分片數量,-2時不指定分片數量,-1或all指定全部分片 |
6.指定檔案id新增(一般將檔案id的值設定為檔案主鍵欄位)
(1).入參物體需實作IdProvider介面
@Data
public class EmployeeEntity implements IdProvider {
@JsonProperty("id")
private String id;
@JsonProperty("employeeId")
private String employeeId;
@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":"10000009",
"employeeId":10000009,
"name": "Damian Lillard",
"job": "Vue engineer",
"age": 25,
"salary": 18000.00,
"birthday": "1996-10-01"
}
10000009
7.批量新增
(1).mapper開發
在專案目錄“/src/main/java/com/example/es”的EmployeeMapper類中新增批量創建員工介面,具體代碼如下,
@EasyMapper(indices = "employee", clusterRouter = "sampleCluster")
public interface EmployeeMapper {
/**
* 批量創建員工
*
* @param employeeEntityList 員工
* @return 回應
*/
@Bulk(bulkType = BulkType.INDEX)
List<BulkItemResponse> bulkIndexEmployeeList(List<EmployeeEntity> employeeEntityList);
/**
* 批量創建員工
*
* @param employeeEntities 員工
* @return 回應
*/
@Bulk(bulkType = BulkType.INDEX)
List<BulkItemResponse> bulkIndexEmployeeList(EmployeeEntity... employeeEntities);
/**
* 批量創建員工
*
* @param employeeEntities 員工
* @return 回應
*/
@Bulk(bulkType = BulkType.INDEX)
BulkItemResponse[] bulkIndexEmployeeArray(EmployeeEntity... employeeEntities);
/**
* 批量創建員工
*
* @param employeeEntities 員工
* @return 回應
*/
@Bulk(bulkType = BulkType.INDEX)
BulkResponse bulkIndexEmployeeBulkResponse(EmployeeEntity... employeeEntities);
}
(2).controller開發
在專案目錄“/src/main/java/com/example/es”下的EmployeeController類中新增批量創建員工介面,以介面bulkIndexEmployeeList為例演示開發步驟,具體代碼如下,
@RestController
@RequestMapping("/employee")
public class EmployeeController {
@Resource
private EmployeeMapper employeeMapper;
@ResponseBody
@RequestMapping(value = "/bulkIndexEmployeeList", method = RequestMethod.POST)
public List<BulkItemResponse> bulkIndexEmployeeList(@RequestBody List<EmployeeEntity> employeeConditionList) {
return employeeMapper.bulkIndexEmployeeList(employeeConditionList);
}
}
(3).測驗
啟動專案,然后在postman中請求“http://localhost:8080/employee/bulkIndexEmployeeList”,成功后回傳對應的資訊,
[
{
"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"
}
]
[
{
"id": "10000011",
"opType": "INDEX",
"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": 1,
"seqNo": 4,
"primaryTerm": 1,
"result": "CREATED",
"index": "employee",
"fragment": false
},
"failure": null,
"type": "_doc",
"index": "employee",
"version": 1,
"failureMessage": null,
"itemId": 0,
"failed": false,
"fragment": false
},
{
"id": "10000012",
"opType": "INDEX",
"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": 1,
"seqNo": 4,
"primaryTerm": 1,
"result": "CREATED",
"index": "employee",
"fragment": false
},
"failure": null,
"type": "_doc",
"index": "employee",
"version": 1,
"failureMessage": null,
"itemId": 1,
"failed": false,
"fragment": false
}
]
(4).注解
@Bulk注解標明此方法是批量方法,同時必須要指定BulkType標明是何種型別的批量操作,做批量更新操作時,如果想檔案不存在則做插入操作,設定@Update(docAsUpsert=true),
(5).@Bulk屬性說明
| 序號 | 屬性名 | 默認值 | 說明 |
|---|---|---|---|
| 1 | bulkType | 必填 | 可選型別:INDEX/DELETE/UPDATE |
| 2 | timeout | 1m | 數值+時間單位(ms/s/m/h/M/y) |
| 3 | waitForActiveShards | -2 | 活動分片數量,-2時不指定分片數量,-1或all指定全部分片 |
| 4 | index | 可選 | bulkType = INDEX有效 |
| 5 | delete | 可選 | bulkType = DELETE有效 |
| 6 | update | 可選 | bulkType = UPDATE有效 |
| 7 | refreshPolicy | RefreshPolicy.NONE |
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/387825.html
標籤:其他
