ElasticSearch在Java中的基本使用方式

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

客户端创建

public class EsTest_client {
    //ES测试代码
    public static void main(String[] args) throws Exception {
        //创建ES客户端
        RestHighLevelClient esClient = new RestHighLevelClient(
                //连接地址,接口,连接方式
                RestClient.builder(new HttpHost("localhost",9200,"http"))
        );
        //关闭Es客户端
        esClient.close();
    }

索引使用方式

索引创建

    public static void main(String[] args) throws Exception {
        //创建ES客户端
        RestHighLevelClient esClient = new RestHighLevelClient(
                //连接地址,接口,连接方式
                RestClient.builder(new HttpHost("localhost",9200,"http"))
        );
        CreateIndexRequest user = new CreateIndexRequest("user");
        CreateIndexResponse response = esClient.indices().create(user, RequestOptions.DEFAULT);

        //响应状态
        boolean acknowledged = response.isAcknowledged();
        System.out.println("索引操作,"+ acknowledged);

        //关闭Es客户端
        esClient.close();

    }

索引查询

   public static void main(String[] args) throws Exception {
        //创建ES客户端
        RestHighLevelClient esClient = new RestHighLevelClient(
                //连接地址,接口,连接方式
                RestClient.builder(new HttpHost("localhost",9200,"http"))
        );
        GetIndexRequest user = new GetIndexRequest("user");
        //获取目录数据
        GetIndexResponse getIndexResponse = esClient.indices().get(user, RequestOptions.DEFAULT);
        System.out.println(getIndexResponse.getMappings());
        System.out.println(getIndexResponse.getSettings());
        System.out.println(getIndexResponse.getAliases());
        //关闭Es客户端
        esClient.close();
    }

删除索引

    public static void main(String[] args) throws Exception {
        //创建ES客户端
        RestHighLevelClient esClient = new RestHighLevelClient(
                //连接地址,接口,连接方式
                RestClient.builder(new HttpHost("localhost",9200,"http"))
        );
        DeleteIndexRequest user = new DeleteIndexRequest("user");
        //删除索引
        AcknowledgedResponse delete = esClient.indices().delete(user, RequestOptions.DEFAULT);

        System.out.println(delete.isAcknowledged());
        //关闭Es客户端
        esClient.close();

    }

查询基本操作

插入一条数据

    public static void main(String[] args) throws Exception {
        //创建ES客户端
        RestHighLevelClient esClient = new RestHighLevelClient(
                //连接地址,接口,连接方式
                RestClient.builder(new HttpHost("localhost",9200,"http"))
        );
        //操作插入的index
        IndexRequest request = new IndexRequest("user");
        //设置id
        request.id("1001");
        User user1 = new User();
        user1.setName("张三");
        user1.setAge(20);
        user1.setAddress("中国");
        //将插入对象JSON化
        ObjectMapper objectMapper = new ObjectMapper();
        String userJson = objectMapper.writeValueAsString(user1);
        //指定插入数据的类型
        request.source(userJson, XContentType.JSON);
        //插入数据
        IndexResponse index = esClient.index(request, RequestOptions.DEFAULT);
        System.out.println(index.getResult());
        //关闭Es客户端
        esClient.close();
    }

获取一条ID的数据

   public static void main(String[] args) throws Exception {
        //创建ES客户端
        RestHighLevelClient esClient = new RestHighLevelClient(
                //连接地址,接口,连接方式
                RestClient.builder(new HttpHost("localhost",9200,"http"))
        );
        GetRequest getRequest = new GetRequest();
        GetRequest user = getRequest.index("user").id("1001");
        GetResponse response = esClient.get(getRequest, RequestOptions.DEFAULT);
        System.out.println(response.toString());
        System.out.println(response.getSourceAsString());
        //关闭Es客户端
        esClient.close();
    }

更新一条数据

   public static void main(String[] args) throws Exception {
        //创建ES客户端
        RestHighLevelClient esClient = new RestHighLevelClient(
                //连接地址,接口,连接方式
                RestClient.builder(new HttpHost("localhost",9200,"http"))
        );

        UpdateRequest updateRequest = new UpdateRequest();
        updateRequest.index("user").id("1001").doc(XContentType.JSON,"name","李四");
        UpdateResponse update = esClient.update(updateRequest, RequestOptions.DEFAULT);

        System.out.println(update.getGetResult());
        //关闭Es客户端
        esClient.close();
    }

删除一条数据

    public static void main(String[] args) throws Exception {
        //创建ES客户端
        RestHighLevelClient esClient = new RestHighLevelClient(
                //连接地址,接口,连接方式
                RestClient.builder(new HttpHost("localhost",9200,"http"))
        );

        DeleteRequest deleteRequest = new DeleteRequest();
        deleteRequest.index("user").id("1001");
        DeleteResponse delete = esClient.delete(deleteRequest, RequestOptions.DEFAULT);
        System.out.println(delete.getResult());

        //关闭Es客户端
        esClient.close();

    }
    

批量操作

批量新增

    public static void main(String[] args) throws Exception {
        //创建ES客户端
        RestHighLevelClient esClient = new RestHighLevelClient(
                //连接地址,接口,连接方式
                RestClient.builder(new HttpHost("localhost",9200,"http"))
        );
       // 批量插入
        BulkRequest bulkRequest = new BulkRequest();

        bulkRequest.add(new IndexRequest().index("user").id("1001").source(XContentType.JSON,"name","zhangsan","address","河北","age","18"));
        bulkRequest.add(new IndexRequest().index("user").id("1002").source(XContentType.JSON,"name","lisi","address","河南","age","19"));
        bulkRequest.add(new IndexRequest().index("user").id("1003").source(XContentType.JSON,"name","wangwu","address","山东","age","17"));
        bulkRequest.add(new IndexRequest().index("user").id("1004").source(XContentType.JSON,"name","zhaoliu1","address","山西","age","18"));
        bulkRequest.add(new IndexRequest().index("user").id("1005").source(XContentType.JSON,"name","zhaoliu2","address","江苏","age","18"));
        bulkRequest.add(new IndexRequest().index("user").id("1006").source(XContentType.JSON,"name","zhaoliu3","address","天津","age","18"));
        bulkRequest.add(new IndexRequest().index("user").id("1007").source(XContentType.JSON,"name","zhaoliu4","address","北京","age","18"));

        BulkResponse bulk = esClient.bulk(bulkRequest, RequestOptions.DEFAULT);
        System.out.println(bulk.getItems());
        System.out.println(bulk.getTook());
        
        //关闭Es客户端
        esClient.close();

    }

批量删除

public static void main(String[] args) throws Exception {
        //创建ES客户端
        RestHighLevelClient esClient = new RestHighLevelClient(
                //连接地址,接口,连接方式
                RestClient.builder(new HttpHost("localhost",9200,"http"))
        );
       // 批量删除
        BulkRequest bulkRequest = new BulkRequest();

        bulkRequest.add(new DeleteRequest().index("user").id("1001"));
        bulkRequest.add(new DeleteRequest().index("user").id("1002"));
        bulkRequest.add(new DeleteRequest().index("user").id("1003"));
        bulkRequest.add(new DeleteRequest().index("user").id("1004"));

        BulkResponse bulk = esClient.bulk(bulkRequest, RequestOptions.DEFAULT);
        System.out.println(bulk.getItems());
        System.out.println(bulk.getTook());
        //关闭Es客户端
        esClient.close();

    }
    

高级查询

全量查询

 public static void main(String[] args) throws Exception {
        //创建ES客户端
        RestHighLevelClient esClient = new RestHighLevelClient(
                //连接地址,接口,连接方式
                RestClient.builder(new HttpHost("localhost",9200,"http"))
        );
        SearchRequest searchRequest = new SearchRequest();
        searchRequest.indices("user");
        
        searchRequest.source(new SearchSourceBuilder().query(QueryBuilders.matchAllQuery()));

        SearchResponse search = esClient.search(searchRequest, RequestOptions.DEFAULT);
        SearchHits hits = search.getHits();
        System.out.println(hits.getHits());
        System.out.println(search.getTook());

        for (SearchHit hit : hits){
            System.out.println(hit.getSourceAsString());
        }

        //关闭Es客户端
        esClient.close();

    }

分页查询

    public static void main(String[] args) throws Exception {
        //创建ES客户端
        RestHighLevelClient esClient = new RestHighLevelClient(
                //连接地址,接口,连接方式
                RestClient.builder(new HttpHost("localhost",9200,"http"))
        );
        SearchRequest searchRequest = new SearchRequest();
        searchRequest.indices("user");
        //分页查询
        SearchSourceBuilder query = new SearchSourceBuilder().query(QueryBuilders.matchAllQuery());
        //分页
        query.from(0);
        query.size(2);
        //配置条件
        SearchRequest source = searchRequest.source(query);
        //进行查询
        SearchResponse search = esClient.search(searchRequest, RequestOptions.DEFAULT);
        SearchHits hits = search.getHits();
        System.out.println(hits.getHits());
        System.out.println(search.getTook());

        for (SearchHit hit : hits){
            System.out.println(hit.getSourceAsString());
        }

        //关闭Es客户端
        esClient.close();

    }

排序查询

public static void main(String[] args) throws Exception {
     //创建ES客户端
     RestHighLevelClient esClient = new RestHighLevelClient(
             //连接地址,接口,连接方式
             RestClient.builder(new HttpHost("localhost",9200,"http"))
     );
     SearchRequest searchRequest = new SearchRequest();
     searchRequest.indices("user");

     // 条件构建的类
     SearchSourceBuilder query = new SearchSourceBuilder().query(QueryBuilders.matchAllQuery());
     query.sort("age", SortOrder.DESC);

     //配置条件
     SearchRequest source = searchRequest.source(query);

     //进行查询
     SearchResponse search = esClient.search(searchRequest, RequestOptions.DEFAULT);
     SearchHits hits = search.getHits();
     System.out.println(hits.getHits());
     System.out.println(search.getTook());

     for (SearchHit hit : hits){
         System.out.println(hit.getSourceAsString());
     }

     //关闭Es客户端
     esClient.close();

 }

模糊查询

    public static void main(String[] args) throws Exception {
       //创建ES客户端
       RestHighLevelClient esClient = new RestHighLevelClient(
               //连接地址,接口,连接方式
               RestClient.builder(new HttpHost("localhost",9200,"http"))
       );
       SearchRequest searchRequest = new SearchRequest();
       searchRequest.indices("user");
       //构建查询对象
       SearchSourceBuilder builder = new SearchSourceBuilder();
       // 针对哪一个字段进行模糊查询(name),查询的值是 zhaoliu,模糊查询的数量,相差一个都能进行匹配得到Fuzziness.ONE
       FuzzyQueryBuilder fuzziness = QueryBuilders.fuzzyQuery("name", "zhaoliu").fuzziness(Fuzziness.ONE);

       builder.query(fuzziness);
       searchRequest.source(builder);
       SearchResponse search = esClient.search(searchRequest, RequestOptions.DEFAULT);
       SearchHits hits = search.getHits();
       System.out.println(hits.getHits());
       System.out.println(search.getTook());

       for (SearchHit hit : hits){
           System.out.println(hit.getSourceAsString());
       }

       //关闭Es客户端
       esClient.close();
   } 

聚合查询

  public static void main(String[] args) throws Exception {
        //创建ES客户端
        RestHighLevelClient esClient = new RestHighLevelClient(
                //连接地址,接口,连接方式
                RestClient.builder(new HttpHost("localhost",9200,"http"))
        );
        SearchRequest searchRequest = new SearchRequest();
        searchRequest.indices("user");


        //构建查询对象
        SearchSourceBuilder builder = new SearchSourceBuilder();
        AggregationBuilder aggregationBuilder = AggregationBuilders.max("MaxAge").field("age");

        builder.aggregation(aggregationBuilder);

        searchRequest.source(builder);
        SearchResponse search = esClient.search(searchRequest, RequestOptions.DEFAULT);
        SearchHits hits = search.getHits();
        System.out.println(hits.getHits());
        System.out.println(search.getTook());

        for (SearchHit hit : hits){
            System.out.println(hit.getSourceAsString());
        }

        //关闭Es客户端
        esClient.close();
        }

高亮查询

    public static void main(String[] args) throws Exception {
        //创建ES客户端
        RestHighLevelClient esClient = new RestHighLevelClient(
                //连接地址,接口,连接方式
                RestClient.builder(new HttpHost("localhost",9200,"http"))
        );
        SearchRequest searchRequest = new SearchRequest();
        searchRequest.indices("user");


        //构建查询对象
        SearchSourceBuilder builder = new SearchSourceBuilder();
        TermsQueryBuilder termsQueryBuilder = QueryBuilders.termsQuery("name", "zhangsan");


        HighlightBuilder highlightBuilder = new HighlightBuilder();
        highlightBuilder.preTags("<font color='red'>");
        highlightBuilder.postTags("</font>");
        highlightBuilder.field("name");

        builder.highlighter(highlightBuilder);
        builder.query(termsQueryBuilder);

        searchRequest.source(builder);
        SearchResponse search = esClient.search(searchRequest, RequestOptions.DEFAULT);
        SearchHits hits = search.getHits();
        System.out.println(hits.getHits());
        System.out.println(search.getTook());

        for (SearchHit hit : hits){
            System.out.println(hit.getSourceAsString());
        }
        //关闭Es客户端
        esClient.close();
    }

分组查询

//ES测试代码   分组查询
    public static void main(String[] args) throws Exception {
        //创建ES客户端
        RestHighLevelClient esClient = new RestHighLevelClient(
                //连接地址,接口,连接方式
                RestClient.builder(new HttpHost("localhost",9200,"http"))
        );
        SearchRequest searchRequest = new SearchRequest();
        searchRequest.indices("user");


        //构建查询对象
        SearchSourceBuilder builder = new SearchSourceBuilder();
        TermsAggregationBuilder termsAggregationBuilder = AggregationBuilders.terms("ageFroup").field("age");
        builder.aggregation(termsAggregationBuilder);
        
        searchRequest.source(builder);
        SearchResponse search = esClient.search(searchRequest, RequestOptions.DEFAULT);
        SearchHits hits = search.getHits();
        System.out.println(hits.getHits());
        System.out.println(search.getTook());

        for (SearchHit hit : hits){
            System.out.println(hit.getSourceAsString());
        }

        //关闭Es客户端
        esClient.close();

    }
    ```
### 条件查询
```java
  //ES测试代码 条件查询
    public static void main(String[] args) throws Exception {
        //创建ES客户端
        RestHighLevelClient esClient = new RestHighLevelClient(
                //连接地址,接口,连接方式
                RestClient.builder(new HttpHost("localhost",9200,"http"))
        );
        SearchRequest searchRequest = new SearchRequest();
        searchRequest.indices("user");
        //条件查询 termQuery
        searchRequest.source(new SearchSourceBuilder().query(QueryBuilders.termQuery("age",18)));

        SearchResponse search = esClient.search(searchRequest, RequestOptions.DEFAULT);
        SearchHits hits = search.getHits();
        System.out.println(hits.getHits());
        System.out.println(search.getTook());

        for (SearchHit hit : hits){
            System.out.println(hit.getSourceAsString());
        }

        //关闭Es客户端
        esClient.close();

    }

条件查询,查询结果包含和不包含某些字段

    //ES测试代码 字段过滤

    public static void main(String[] args) throws Exception {
        //创建ES客户端
        RestHighLevelClient esClient = new RestHighLevelClient(
                //连接地址,接口,连接方式
                RestClient.builder(new HttpHost("localhost",9200,"http"))
        );
        SearchRequest searchRequest = new SearchRequest();
        searchRequest.indices("user");
        //条件查询 termQuery
        SearchSourceBuilder builder = new SearchSourceBuilder().query(QueryBuilders.matchAllQuery());

        // 包含 和 不包含
        String[] include = {};
        // 查询出来的结果就不会包含age字段
        String[] exInclude = {"age"};

        builder.fetchSource(include,exInclude);
        SearchRequest source = searchRequest.source(builder);
        SearchResponse search = esClient.search(searchRequest, RequestOptions.DEFAULT);
        SearchHits hits = search.getHits();
        System.out.println(hits.getHits());
        System.out.println(search.getTook());

        for (SearchHit hit : hits){
            System.out.println(hit.getSourceAsString());
        }

        //关闭Es客户端
        esClient.close();
    }

多条件查询

   //ES测试代码 组合查询
    public static void main(String[] args) throws Exception {
        //创建ES客户端
        RestHighLevelClient esClient = new RestHighLevelClient(
                //连接地址,接口,连接方式
                RestClient.builder(new HttpHost("localhost",9200,"http"))
        );
        SearchRequest searchRequest = new SearchRequest();
        searchRequest.indices("user");
        //条件查询 termQuery
        SearchSourceBuilder builder = new SearchSourceBuilder();
//        BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
//        boolQueryBuilder.must(QueryBuilders.matchQuery("age",18));
//        boolQueryBuilder.must(QueryBuilders.matchQuery("name","zhaoliu1"));

        //范围查询
        RangeQueryBuilder age = QueryBuilders.rangeQuery("age");
        age.gte(10);
        age.lte(18);

        builder.query(age);

        searchRequest.source(builder);

        SearchResponse search = esClient.search(searchRequest, RequestOptions.DEFAULT);
        SearchHits hits = search.getHits();
        System.out.println(hits.getHits());
        System.out.println(search.getTook());

        for (SearchHit hit : hits){
            System.out.println(hit.getSourceAsString());
        }

        //关闭Es客户端
        esClient.close();

    }
    

文章来源地址https://www.toymoban.com/news/detail-832298.html

到了这里,关于ElasticSearch在Java中的基本使用方式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • Elasticsearch之java的基本操作一

    摘要   接触ElasticSearch已经有一段了。在这期间,遇到很多问题,但在最后自己的不断探索下解决了这些问题。看到网上或多或少的都有一些介绍ElasticSearch相关知识的文档,但个人觉得都不是很全面。因此就有了写ElasticSearch开发教程的想法,将学习到的技术经验分享出来,

    2024年02月05日
    浏览(38)
  • Elasticsearch 基本使用(五)查询条件匹配方式(query & query_string)

    ES中常用的查询类型往大了分可以分为简单查询,复合查询,聚合查询等; 而复合查询及聚合查询都是基于简单查询的;简单查询里面对条件的匹配方式又分为不同类型。term[s],match,match_all,match_phrase 等等 term 单词查询,在字段的倒排索引(发生分词)或者直接在字段值(

    2024年02月09日
    浏览(40)
  • 4、Elasticsearch7.6.1 Java api操作ES(CRUD、两种分页方式、高亮显示)和Elasticsearch SQL详细示例

    1、介绍lucene的功能以及建立索引、搜索单词、搜索词语和搜索句子四个示例实现 2、Elasticsearch7.6.1基本介绍、2种部署方式及验证、head插件安装、分词器安装及验证 3、Elasticsearch7.6.1信息搜索示例(索引操作、数据操作-添加、删除、导入等、数据搜索及分页) 4、Elasticsearch7

    2024年02月16日
    浏览(71)
  • ElasticSearch进阶:多种查询操作,各种ES查询以及在Java中的实现

    目录 前言 1 词条查询 1.1 等值查询-term 1.2 多值查询-terms 1.3 范围查询-range 1.4 前缀查询-prefix 1.5 通配符查询-wildcard 2 复合查询 2.1 布尔查询 2.2 Filter查询 3 聚合查询 3.1 最值、平均值、求和 3.2 去重查询 3.3 分组聚合 3.3.1 单条件分组 3.3.2 多条件分组 3.4 过滤聚合 ElasticSearch 第一篇

    2024年02月02日
    浏览(47)
  • ElasticSearch进阶:一文全览各种ES查询在Java中的实现

    ElasticSearch进阶:一文全览各种ES查询在Java中的实现 es基本语句详解 查询语句详解 ElasticSearch第一篇: ElasticSearch基础:从倒排索引说起,快速认知ES 完整项目已上传至:ElasticSearch Demo 项目,该项目是关于springboot的集成项目,ElasticSearch部分请关注【elasticSearch-demo】模块。觉得

    2024年02月02日
    浏览(47)
  • 【ElasticSearch】ElasticSearch Java API的使用——常用索引、文档、查询操作(二)

    Elaticsearch ,简称为es,es是一个开源的 高扩展 的 分布式全文检索引擎 ,它可以近乎 实时的存储 、 检索数据; 本身扩展性很好,可以扩展到上百台服务器,处理PB级别(大数据时代)的数据。es也使用java开发并使用Lucene作为其核心来实现所有索引和搜索的功能,但是它的 目的

    2024年01月16日
    浏览(71)
  • Elasticsearch 详细使用文档及java案例

    Elasticsearch 是一个开源的分布式搜索引擎,它可以快速地存储、搜索和分析大量数据。它使用 Lucene 作为底层搜索引擎,提供了 RESTful API 接口,支持多种数据格式和查询语言。 本文档将介绍 Elasticsearch 的基本概念、安装和配置、数据索引和查询、集群管理等方面的内容。 索引

    2024年02月10日
    浏览(32)
  • Elasticsearch与Java的集成与使用

    Elasticsearch是一个基于Lucene的搜索引擎,它具有实时搜索、分布式、可扩展和高性能等特点。Java是一种广泛使用的编程语言,它与Elasticsearch之间的集成和使用是非常重要的。本文将从以下几个方面进行阐述: 核心概念与联系 核心算法原理和具体操作步骤 数学模型公式详细讲

    2024年02月19日
    浏览(42)
  • elasticsearch7基础用法及java中使用

    GET、POST、PUT、DELETE、HEAD。 id content 1001 my name is zhang san 1002 i name is li si 1003 my name is wang wu keyword id name 1001,1002,1003 zhang 1001a my 1001,1003 PUT请求:http://127.0.0.1:9200/索引名称 返回值: 表头 含义 health 当前服务器健康状态: green (集群完整) yellow (单点正常、集群不完整) red(单点不正

    2024年02月03日
    浏览(31)
  • Elasticsearch、Kibana以及Java操作ES 的快速使用

      创建docker自定义网络 docker自定义网络可以使得 容器之间使用容器名网络互连 ,默认的网络不会有这功能。 一定要配置自定义网络,并将两个容器同时加到网络中,否则下面的 http://es:9200 会无法访问到es   启动elastic search、kibana容器 启动 elastic search容器 访问 http://192.168

    2024年02月09日
    浏览(42)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包