ElasticSearch Rest Api

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();
    }

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值