栏目分类:
子分类:
返回
终身学习网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
终身学习网 > IT > 前沿技术 > 大数据 > 大数据系统

Elasticsearch的Java客户端--文档操作--索引文档

大数据系统 更新时间:发布时间: 百科书网 趣学号

官方文档:https://www.elastic.co/guide/en/elasticsearch/client/java-rest/current/java-rest-high-supported-apis.html

索引文档 步骤
public static void main(String[] args) throws IOException {
        // 1.创建客户端,需要提供 ES 的连接地址
        RestClientBuilder clientBuilder = RestClient.builder(new HttpHost("127.0.0.1", 9200, "http"));
        RestHighLevelClient client = new RestHighLevelClient(clientBuilder);

        // 2.创建文档
        String jsonString = "{'user': 'kimchy','postDate': '2013-01-30','message': 'trying out Elasticsearch'}";

        // 3.创建索引请求,设置文档的索引和id
        IndexRequest request = new IndexRequest("posts").id("1");
        request.source(jsonString);

        // 4.客户端发送请求,返回响应结果
        IndexResponse response = client.index(request, RequestOptions.DEFAULT);

        String index = response.getIndex();//索引
        String id = response.getId();//文档id
        int status = response.status().getStatus();//状态码

        // 请求结束之后关闭连接,释放资源
        client.close();
    }

上面那种方式发送的请求是同步的,也可以异步发送请求

public static void main(String[] args) throws IOException {
        // 1.创建客户端,需要提供 ES 的连接地址
        RestClientBuilder clientBuilder = RestClient.builder(new HttpHost("127.0.0.1", 9200, "http"));
        RestHighLevelClient client = new RestHighLevelClient(clientBuilder);

        // 2.创建文档
        String jsonString = "{'user': 'kimchy','postDate': '2013-01-30','message': 'trying out Elasticsearch'}";

        // 3.创建索引请求,设置文档的索引和id
        IndexRequest request = new IndexRequest("posts").id("1");
        request.source(jsonString);

        // 4.客户端发送请求,返回响应结果
        // 异步
        Cancellable responseAsync = client.indexAsync(request, RequestOptions.DEFAULT, new ActionListener() {
            @Override
            public void onResponse(IndexResponse response) {
                // 请求执行成功
                System.out.println("请求执行成功!");

                String index = response.getIndex();//索引
                String id = response.getId();//文档id
                int status = response.status().getStatus();//状态码
            }

            @Override
            public void onFailure(Exception e) {
                // 请求执行失败
                System.out.println("请求执行失败!");
            }
        });

        // 异步请求可以取消
        responseAsync.cancel();

        // 请求结束之后关闭连接,释放资源
        client.close();
    }

异步请求相比同步请求多了一个 ActionListener 参数,异步的请求不会阻塞且不会立即返回,当请求完成后回调 ActionListener 接口中的对应方法

可选参数

在执行请求之前我们可以自定义设置一些可选的请求参数,如下列出部分参数

request.routing("routing");//设置请求的路由
request.timeout(Timevalue.timevalueSeconds(1));//设置请求超时时间
request.timeout("1s");
// 设置ES的刷新策略,wait_for 策略表示请求向ES提交了数据,等待数据完成刷新,然后再结束请求
request.setRefreshPolicy(WriteRequest.RefreshPolicy.WAIT_UNTIL);
request.setRefreshPolicy("wait_for");
request.version(2);//请求操作文档的版本
request.opType(DocWriteRequest.OpType.CREATE);//设置请求操作的类型为create
request.opType("create");
//索引文档之前要执行的pipeline的名称,pipeline用于在数据存储到ES之前预处理数据
request.setPipeline("pipeline");
转载请注明:文章转载自 www.051e.com
本文地址:http://www.051e.com/it/280857.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 ©2023-2025 051e.com

ICP备案号:京ICP备12030808号