1.condition開發
在項目目錄“/src/main/java/com/example/es”下建立condition目錄,并在condition目錄下建立SampleEmployeeCondition查詢條件類,具體代碼如下。
@Data
public class SampleEmployeeCondition {
@Must
@Field("employeeId")
private String employeeId;
@Must
@Field("name")
private String name;
@Must
@Field("age")
private Integer age;
@Must
@Field("birthday")
private String birthday;
@Must
@Field("job")
private String job;
@Must
@Field("salary")
private Float salary;
}
2.mapper開發
在項目目錄“/src/main/java/com/example/es”的EmployeeMapper類中新增查詢員工資訊接口,具體代碼如下。
@EasyMapper(indices = "employee", clusterRouter = "sampleCluster")
public interface EmployeeMapper {
/**
* 查詢員工
*
* @param sampleEmployeeCondition 員工
* @return Employee,可能為null
*/
@Get
EmployeeEntity getEmployee(SampleEmployeeCondition sampleEmployeeCondition);
/**
* 查詢員工
*
* @param id 員工文檔id
* @return Employee,可能為null
*/
@Get
EmployeeEntity getEmployee(String id);
/**
* 查詢員工
*
* @param id 員工文檔id
* @return Option
*/
@Get
Optional<EmployeeEntity> getEmployeeOptional(String id);
/**
* 查詢員工
*
* @param id 員工文檔id
* @return GetResponse
*/
@Get
GetResponse getEmployeeGetResponse(String id);
/**
* 查詢員工
*
* @param id 員工文檔id
* @return 異步Optional
*/
@Get
CompletableFuture<Optional<EmployeeEntity>> getEmployeeCompletableFuture(String id);
}
3.controller開發
在項目目錄“/src/main/java/com/example/es”下的EmployeeController類中新增查詢員工資訊接口,以indexEmployeeString接口為例示範開發步驟,具體代碼如下。
@RestController
@RequestMapping("/employee")
public class EmployeeController {
@Resource
private EmployeeMapper employeeMapper;
@ResponseBody
@RequestMapping(value = "/getEmployee", method = RequestMethod.POST)
public EmployeeEntity getEmployee(@RequestParam String id) {
return employeeMapper.getEmployee(id);
}
}
4.測試
啟動項目,然後在postman中請求“http://localhost:8080/employee/getEmployee?id=4SB70X0B68NPz8Jszbaa”,成功後傳回文檔id所對應的文檔資訊。
{
"id": null,
"employeeId": "10000002",
"name": "Stephen Curry",
"age": 27,
"birthday": "1995-08-06",
"job": "Java engineer",
"salary": 20000.0
}
5.@Get屬性說明
序号 | 屬性名 | 預設值 | 說明 |
1 | preference | 設定查詢偏好,影響查詢的分片政策 | |
2 | refresh | false | 設定是否重新整理,預設不重新整理 |
3 | realtime | true | 設定是否實時查詢,預設實時 |
6.Multi Get API
(1).mapper開發
在項目目錄“/src/main/java/com/example/es”的EmployeeMapper類中新增批量查詢員工資訊接口,具體代碼如下。
@EasyMapper(indices = "employee", clusterRouter = "sampleCluster")
public interface EmployeeMapper {
/**
* 多員工查詢
*
* @param ids 多員工id
* @return MultiGetResponse
*/
@MultiGet
MultiGetResponse getEmployeesResponse(String... ids);
/**
* 多員工查詢
*
* @param ids 多員工id
* @return 員工集合
*/
@MultiGet
List<EmployeeEntity> getEmployees(String... ids);
/**
* 多員工查詢
*
* @param ids 多員工id
* @return MultiGetItemResponse[]
*/
@MultiGet
MultiGetItemResponse[] getEmployeesItemResponse(String... ids);
/**
* 多員工查詢
*
* @param sampleEmployeeConditionList 多員工
* @return 員工數組
*/
@MultiGet
EmployeeEntity[] getEmployees(List<SampleEmployeeCondition> sampleEmployeeConditionList);
/**
* 多員工查詢
*
* @param sampleEmployeeConditionList 多員工id
* @return List<MultiGetItemResponse>
*/
@MultiGet
List<MultiGetItemResponse> getEmployeesItemResponse(List<SampleEmployeeCondition> sampleEmployeeConditionList);
/**
* 多員工查詢
*
* @param ids 多員工id
* @return List<Optional < EmployeeEntity>>
*/
@MultiGet
List<Optional<EmployeeEntity>> getEmployeesOptional(String... ids);
/**
* 多員工查詢
*
* @param sampleEmployeeConditionList 多員工
* @return Optional<RecentOrder>[]
*/
@MultiGet
Optional<EmployeeEntity>[] getEmployeesOptional(List<SampleEmployeeCondition> sampleEmployeeConditionList);
/**
* 多員工異步查詢
*
* @param sampleEmployeeConditionList 多員工
* @return CompletableFuture<Optional < EmployeeEntity>[]>
*/
@MultiGet
CompletableFuture<Optional<EmployeeEntity>[]> getEmployeesOptionalFuture(List<SampleEmployeeCondition> sampleEmployeeConditionList);
}
@RestController
@RequestMapping("/employee")
public class EmployeeController {
@Resource
private EmployeeMapper employeeMapper;
@ResponseBody
@RequestMapping(value = "/getEmployeesResponse", method = RequestMethod.POST)
public MultiGetResponse getEmployeesResponse(@RequestBody List<String> integerList) {
return employeeMapper.getEmployeesResponse(integerList.toArray(new String[integerList.size()]));
}
}
["4iB70X0B68NPz8Js6rb3","5iB80X0B68NPz8JsY7aI"]
{
"responses": [
{
"response": {
"fields": {},
"id": "4iB70X0B68NPz8Js6rb3",
"type": "_doc",
"index": "employee",
"source": {
"birthday": "1987-12-25",
"name": "LeBron James",
"employeeId": 10000003,
"job": "Technical director",
"salary": 50000.0,
"age": 35
},
"version": 2,
"primaryTerm": 1,
"seqNo": 18,
"sourceAsBytes": "eyJlbXBsb3llZUlkIjoxMDAwMDAwMywibmFtZSI6IkxlQnJvbiBKYW1lcyIsImpvYiI6IlRlY2huaWNhbCBkaXJlY3RvciIsImFnZSI6MzUsInNhbGFyeSI6NTAwMDAuMCwiYmlydGhkYXkiOiIxOTg3LTEyLTI1In0=",
"exists": true,
"sourceEmpty": false,
"sourceAsMap": {
"birthday": "1987-12-25",
"name": "LeBron James",
"employeeId": 10000003,
"job": "Technical director",
"salary": 50000.0,
"age": 35
},
"sourceInternal": {
"fragment": true
},
"sourceAsString": "{\"employeeId\":10000003,\"name\":\"LeBron James\",\"job\":\"Technical director\",\"age\":35,\"salary\":50000.0,\"birthday\":\"1987-12-25\"}",
"sourceAsBytesRef": {
"fragment": true
},
"fragment": false
},
"failure": null,
"id": "4iB70X0B68NPz8Js6rb3",
"type": "_doc",
"index": "employee",
"failed": false
},
{
"response": {
"fields": {},
"id": "5iB80X0B68NPz8JsY7aI",
"type": "_doc",
"index": "employee",
"source": {
"birthday": "1997-08-02",
"name": "Jason Tatum",
"employeeId": 10000007,
"job": "Java engineer",
"salary": 15000.0,
"age": 24
},
"version": 3,
"primaryTerm": 1,
"seqNo": 4,
"sourceAsBytes": "eyJlbXBsb3llZUlkIjoxMDAwMDAwNywibmFtZSI6Ikphc29uIFRhdHVtIiwiam9iIjoiSmF2YSBlbmdpbmVlciIsImFnZSI6MjQsInNhbGFyeSI6MTUwMDAuMCwiYmlydGhkYXkiOiIxOTk3LTA4LTAyIn0=",
"exists": true,
"sourceEmpty": false,
"sourceAsMap": {
"birthday": "1997-08-02",
"name": "Jason Tatum",
"employeeId": 10000007,
"job": "Java engineer",
"salary": 15000.0,
"age": 24
},
"sourceInternal": {
"fragment": true
},
"sourceAsString": "{\"employeeId\":10000007,\"name\":\"Jason Tatum\",\"job\":\"Java engineer\",\"age\":24,\"salary\":15000.0,\"birthday\":\"1997-08-02\"}",
"sourceAsBytesRef": {
"fragment": true
},
"fragment": false
},
"failure": null,
"id": "5iB80X0B68NPz8JsY7aI",
"type": "_doc",
"index": "employee",
"failed": false
}
],
"fragment": false
}