public class AppServiceImpl implements AppService{
@Autowired
private ElasticClient elasticClient;
@Override
/**
* 索引API
*/
public void save(User user) {
RestHighLevelClient client = elasticClient.getRestHighLevelClient();
//Json字符串作为数据源
IndexRequest indexRequest1 = new IndexRequest(
“posts”,
“doc”,
“33”);
String jsonString = “{” +
““user”:“kimchy”,” +
““postDate”:“2013-01-30”,” +
““message”:“trying out Elasticsearch”” +
“}”;
indexRequest1.source(jsonString, XContentType.JSON);
//Map集合作为数据源
Map<String, Object> jsonMap = new HashMap<>();
jsonMap.put("user", "userByMap");
jsonMap.put("postDate", new Date());
jsonMap.put("message", "messageByMap");
IndexRequest indexRequest2 = new IndexRequest("posts", "doc", "34")
.source(jsonMap);
//XContentBuilder作为数据源
XContentBuilder builder = null;
try {
builder = XContentFactory.jsonBuilder();
builder.startObject();
builder.field("user", "userXXX");
builder.timeField("postDate", new Date());
builder.field("message", "messageXXX");
builder.endObject();
} catch (IOException e) {
e.printStackTrace();
}
IndexRequest indexRequest3 = new IndexRequest("posts", "doc", "37")
.source(builder);
ActionListener<IndexResponse> listener = new ActionListener<IndexResponse>() {
@Override
public void onResponse(IndexResponse indexResponse) {
System.out.println("索引成功!");
String index = indexResponse.getIndex();
String type = indexResponse.getType();
String id = indexResponse.getId();
long version = indexResponse.getVersion();
if (indexResponse.getResult() == DocWriteResponse.Result.CREATED) {
} else if (indexResponse.getResult() == DocWriteResponse.Result.UPDATED) {
}
ReplicationResponse.ShardInfo shardInfo = indexResponse.getShardInfo();
if (shardInfo.getTotal() != shardInfo.getSuccessful()) {
}
if (shardInfo.getFailed() > 0) {
for (ReplicationResponse.ShardInfo.Failure failure :
shardInfo.getFailures()) {
String reason = failure.reason();
}
}
}
@Override
public void onFailure(Exception e) {
System.out.println("索引失败!");
e.printStackTrace();
}
};
try {
IndexResponse indexResponse1 = client.index(indexRequest1, RequestOptions.DEFAULT);
client.index(indexRequest2, RequestOptions.DEFAULT);
client.index(indexRequest3, RequestOptions.DEFAULT);
client.close();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 获取API
*/
public void get(){
RestHighLevelClient client = elasticClient.getRestHighLevelClient();
GetRequest getRequest = new GetRequest(
"posts",
"doc",
"1");
try {
GetResponse getResponse = client.get(getRequest, RequestOptions.DEFAULT);
client.close();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 存在API
*/
public void exists() {
RestHighLevelClient client = elasticClient.getRestHighLevelClient();
GetRequest getRequest = new GetRequest("posts","doc","33");
GetResponse getResponse = null;
try {
getRequest.fetchSourceContext(new FetchSourceContext(false));//禁用获取 _source字段
getRequest.storedFields("_none_");//禁用获取存储字段。
boolean exists = client.exists(getRequest, RequestOptions.DEFAULT);
client.close();
} catch (Exception e) {
e.printStackTrace();
}
}
public void delete(){
RestHighLevelClient client = elasticClient.getRestHighLevelClient();
DeleteRequest deleteRequest = new DeleteRequest("02", "book", "2");
deleteRequest.timeout(TimeValue.timeValueMinutes(10));
deleteRequest.setRefreshPolicy(WriteRequest.RefreshPolicy.WAIT_UNTIL);
ActionListener<DeleteResponse> actionListener = new ActionListener<DeleteResponse>() {
@Override
public void onResponse(DeleteResponse deleteResponse) {
System.out.println("删除成功!");
}
@Override
public void onFailure(Exception e) {
e.printStackTrace();
}
};
client.deleteAsync(deleteRequest, RequestOptions.DEFAULT,actionListener);
}
/**
* 更新API
* @param user
*/
public void update(User user){
RestHighLevelClient client = elasticClient.getRestHighLevelClient();
UpdateRequest updateRequest = new UpdateRequest("posts", "doc", "35");
Map<String, Object> map = new HashMap<>();
map.put("message", "message_update");
map.put("user", "user_update");
updateRequest.doc(user.toJsonString(), XContentType.JSON);
try {
client.update(updateRequest, RequestOptions.DEFAULT);
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 批量操作API
* @param user
*/
public void bulk(User user){
RestHighLevelClient client = elasticClient.getRestHighLevelClient();
User user2 = new User();
user2.setName("周大福");
user2.setAge(211);
user2.setPosition("珠宝");
BulkRequest bulkRequest = new BulkRequest();
IndexRequest indexRequest1 = new IndexRequest("posts", "doc", "41").source(user.toJsonString(), XContentType.JSON);
IndexRequest indexRequest2 = new IndexRequest("posts", "doc", "42").source(user2.toJsonString(), XContentType.JSON);
DeleteRequest deleteRequest1 = new DeleteRequest("01", "law", "3");
bulkRequest.add(indexRequest1);
bulkRequest.add(indexRequest2);
bulkRequest.add(deleteRequest1);
try {
client.bulk(bulkRequest, RequestOptions.DEFAULT);
client.close();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* Multi-Get API
*/
public void mget(){
RestHighLevelClient client = elasticClient.getRestHighLevelClient();
MultiGetRequest multiGetRequest = new MultiGetRequest();
multiGetRequest.add(new MultiGetRequest.Item("posts", "doc", "35"));
multiGetRequest.add(new MultiGetRequest.Item("posts", "doc", "36"));
multiGetRequest.add(new MultiGetRequest.Item("01", "law", "5"));
try {
MultiGetResponse mget = client.mget(multiGetRequest, RequestOptions.DEFAULT);
Iterator<MultiGetItemResponse> iterator = mget.iterator();
while (iterator.hasNext()) {
MultiGetItemResponse next = iterator.next();
GetResponse response = next.getResponse();
String sourceAsString = response.getSourceAsString();
System.out.println(sourceAsString);
}
client.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}