Elasticsearch学习3-RestClient

这篇具有很好参考价值的文章主要介绍了Elasticsearch学习3-RestClient。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、RestClient 介绍

JavaREST客户端有两种模式:

Java Low Level REST Client:ES官方的低级客户端。低级别的客户端通过http与Elasticearch集群通信。
Java High Level REST Client:ES官方的高级客户端。基于上面的低级客户端,也是通过HTTP与ES集群进行通信。它提供了更多的接口。
此外Spring也对RestClient进行了封装,本文主要介绍Java High Level REST Client的使用

2、使用RestClient操作索引

2.1创建链接

//创建ES连接对象
        String esAuth = Base64.encodeBase64String(("test_user" + ":" + "test_user").getBytes());
        RestClientBuilder builder = RestClient.builder(new HttpHost("test01.es.58dns.org", 9299, "http"))
                .setRequestConfigCallback(requestConfigBuilder -> requestConfigBuilder
                        .setConnectTimeout(13000)
                        .setSocketTimeout(15000)
                        .setConnectionRequestTimeout(15000));
        builder.setDefaultHeaders(new BasicHeader[]{new BasicHeader("Authorization", "Basic " + esAuth)});
        RestHighLevelClient restHighLevelClient = new RestHighLevelClient(builder);
        System.out.println(restHighLevelClient);

2.2创建索引库

下方代码仅创建了索引库,没有指定映射mapping

可通过request.source(“映射字符串",XContentType.JSON)指定映射字符串文章来源地址https://www.toymoban.com/news/detail-669902.html

// 创建索引
        CreateIndexRequest createIndexRequest = new CreateIndexRequest("user2");
        CreateIndexResponse response = restHighLevelClient.indices().create(createIndexRequest, RequestOptions.DEFAULT);
        boolean acknowledged = response.isAcknowledged();
        //判断是否创建索引成功
        System.out.println(acknowledged);

2.3 查询索引信息、判断索引库是否存在


        //查询索引
        GetIndexRequest getIndexRequest = new GetIndexRequest("user2");
        GetIndexResponse getIndexResponse = restHighLevelClient.indices().get(getIndexRequest, RequestOptions.DEFAULT);
        System.out.println("getIndexResponse.getAliases() = " + getIndexResponse.getAliases());
        System.out.println("getIndexResponse.getMappings() = " + getIndexResponse.getMappings());
        System.out.println("getIndexResponse.getSetting() = " + getIndexResponse.getSettings());
        //判断索引是否存在
        boolean exists = restHighLevelClient.indices().exists(getIndexRequest, RequestOptions.DEFAULT);
        System.out.println("exists = " + exists);

2.4删除索引,判断是否删除成功

//删除索引
 DeleteIndexRequest deleteIndexRequest = new DeleteIndexRequest("user2");
 AcknowledgedResponse delete = restHighLevelClient.indices().delete(deleteIndexRequest, RequestOptions.DEFAULT);
        //判断是否删除成功
System.out.println("delete.isAcknowledged() = " + delete.isAcknowledged());

3、进行文档操作

//新增数据
        User user = new User();
        user.setName("小李");
        user.setAge(12);
        user.setPassword("123321");
        //转化为json串
        ObjectMapper objectMapper = new ObjectMapper();
        String userString = objectMapper.writeValueAsString(user);
        //创建请求
        IndexRequest indexRequest = new IndexRequest();
        //指定索引库名称和id
        indexRequest.index("user").id("1");
        //指定索引类型
        indexRequest.type("_doc");
        //指定要添加的内容
        indexRequest.source(userString, XContentType.JSON);
        IndexResponse index = restHighLevelClient.index(indexRequest, RequestOptions.DEFAULT);
        System.out.println("index.getId() = " + index.getId());

        //查询文档
        GetRequest getIndexRequest1 = new GetRequest();
        getIndexRequest1.index("user").id("1");
        GetResponse getIndexResponse1 = restHighLevelClient.get(getIndexRequest1,RequestOptions.DEFAULT);
        String sourceAsString = getIndexResponse1.getSourceAsString();
        System.out.println("sourceAsString = " + sourceAsString);


        //修改文档
        UpdateRequest updateRequest = new UpdateRequest();
        updateRequest.index("user").id("1");
        updateRequest.doc("name","129212","age",20);
        updateRequest.type("_doc");
        UpdateResponse update = restHighLevelClient.update(updateRequest, RequestOptions.DEFAULT);
        System.out.println("update.getGetResult() = " + update.getGetResult());
        //再次查询文档
        GetRequest getIndexRequest2 = new GetRequest();
        getIndexRequest2.index("user").id("1");
        getIndexRequest2.type("_doc");
        GetResponse getIndexResponse2 = restHighLevelClient.get(getIndexRequest2,RequestOptions.DEFAULT);
        String sourceAsString2 = getIndexResponse2.getSourceAsString();
        System.out.println("sourceAsString2 = " + sourceAsString2);
//删除文档
DeleteRequest deleteRequest1 = new DeleteRequest();
        deleteRequest1.index("user").id("1");
        restHighLevelClient.delete(deleteRequest1,RequestOptions.DEFAULT);

到了这里,关于Elasticsearch学习3-RestClient的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ElasticSearch索引库、文档、RestClient操作

    es中的索引是指相同类型的文档集合 ,即mysql中表的概念 映射:索引中文档字段的约束,比如名称、类型 mapping映射是对索引库中文档的约束。类似mysql对表单字段的约束 type :字段数据类型,常见的类型有: 字符串:text(可分词的文本)、keyword(不可分词的文本,例如国家

    2024年02月10日
    浏览(48)
  • Elasticsearch --- RestAPI、RestClient操作文档

    ES官方提供了各种不同语言的客户端,用来操作ES。这些客户端的本质就是组装DSL语句,通过http请求发送给ES。官方文档地址:Elasticsearch Clients | Elastic 其中的Java Rest Client又包括两种:   创建数据库 创建项目 mapping映射分析 创建索引库,最关键的是mapping映射,而mapping映射要

    2024年02月07日
    浏览(46)
  • SpringCloud:ElasticSearch之RestClient查询文档

    文档的查询同样适用 RestHighLevelClient 对象,基本步骤包括: 1)准备 Request 对象 2)准备请求参数 3)发起请求 4)解析响应 我们以 match_all 查询为例 1.1.发起查询请求 代码解读: 第一步,创建 SearchRequest 对象,指定索引库名 第二步,利用 request.source() 构建DSL,DSL中可以包含查

    2024年02月03日
    浏览(43)
  • Elasticsearch常用查询语法及RestClient操作

    match查询 :全文检索查询的一种,会对用户内容分词,然后去倒排索引库检索,语法。 multi_match :和match类似,但是它允许多个字段进行查询 解释:在 hotel索引库 中按照 address 和 name 两个字段搜索值 包含北京 的文档 精准查询一般是查找keyword,数值,日期,boolean等 不可分

    2024年04月25日
    浏览(51)
  • Elasticsearch的DSL和在RestClient中的应用

      Elasticsearch提供了基于JSON的DSL来定义查询。常见的查询类型包括: 查询所有 :查询出所有数据,一般测试用。例如: match_all:匹配所有文档并返回它们; 全文检索(full text)查询 :利用分词器对用户输入内容分词,然后去倒排索引库中匹配。例如: match_query:针对单个

    2023年04月27日
    浏览(42)
  • ElasticSearch之RestClient操作索引库和文档

    前言:上文介绍了使用DSL语言操作索引库和文档,本篇文章将介绍使用Java中的RestClient来对索引库和文档进行操作。 希望能够加深自己的印象以及帮助到其他的小伙伴儿们😉😉。 如果文章有什么需要改进的地方还请大佬不吝赐教👏👏。 小威在此先感谢各位大佬啦~~🤞🤞

    2024年02月06日
    浏览(37)
  • Elasticsearch --- DSL、RestClient查询文档、搜索结果处理

    elasticsearch的查询依然是基于JSON风格的DSL来实现的。   Elasticsearch提供了基于JSON的DSL(Domain Specific Language)来定义查询。常见的查询类型包括: 查询所有 :查询出所有数据,一般测试用。例如:match_all 全文检索(full text)查询 :利用分词器对用户输入内容分词,然后去倒排

    2024年02月05日
    浏览(58)
  • 分布式搜索引擎ElasticSearch的RestClient查询文档

         

    2024年02月12日
    浏览(62)
  • 【Elasticsearch篇】详解使用RestClient操作索引库的相关操作

    Elasticsearch是一个开源的分布式搜索和分析引擎, 用于实时搜索、分析和存储大规模数据 。它基于Apache Lucene库构建,提供了一个简单而强大的分布式搜索解决方案。 Elasticsearch具有以下特点: 分布式架构:Elasticsearch可以在多个节点上分布数据,并自动处理数据的复制、故障

    2024年01月24日
    浏览(45)
  • SpringCloud(十)——ElasticSearch简单了解(二)DSL查询语句及RestClient查询文档

    查询所有 :查询出所有数据,一般测试用。例如: match_all 全文检索查询 :利用分词器对用户输入内容分词,然后去倒排索引库中匹配。例如: match_query multi_match_query 精确查询 :根据精确词条值查找数据,一般是查找keyword、数值、日期、boolean等类型字段。例如: ids range

    2024年02月10日
    浏览(65)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包