ES基本操作(JavaAPI篇)

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

引入jar包依赖

    <dependencies>
        <dependency>
            <groupId>org.elasticsearch</groupId>
            <artifactId>elasticsearch</artifactId>
            <version>7.8.0</version>
        </dependency>
        <!-- es客户端 -->
        <dependency>
            <groupId>org.elasticsearch.client</groupId>
            <artifactId>elasticsearch-rest-high-level-client</artifactId>
            <version>7.8.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-api</artifactId>
            <version>2.8.2</version>
        </dependency>
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-core</artifactId>
            <version>2.8.2</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.9.9</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>
    </dependencies>

调用API创建Index

ES基本操作(JavaAPI篇),elasticsearch,大数据,搜索引擎

查询和删除Index

        GetIndexRequest request = new GetIndexRequest("user");
        GetIndexResponse response = client.indices().get(request, RequestOptions.DEFAULT);

        System.out.println("Aliases = " + response.getAliases());
        System.out.println("Mappings = " + response.getMappings());

        // 删除
        DeleteIndexRequest deleteRequest = new DeleteIndexRequest("user");
        AcknowledgedResponse deleteResp = client.indices().delete(deleteRequest, RequestOptions.DEFAULT);
        System.out.println("deleteResp = " + deleteResp.toString());

创建和修改文档

User user = new User();
user.setName("刘德华");
user.setAge(60L);
user.setSex("男");
IndexRequest request = new IndexRequest();
request.index("user").id("1");
// 插入es需要转成json格式
request.source(JSON.toJSONString(user), XContentType.JSON);
IndexResponse index = client.index(request, RequestOptions.DEFAULT);

// 修改
UpdateRequest updateRequest = new UpdateRequest();
updateRequest.index("user").id("1");
updateRequest.doc(XContentType.JSON, "age", 65L);
UpdateResponse updateResponse = client.update(updateRequest, RequestOptions.DEFAULT);
        System.out.println(updateResponse.getResult());

查询文档和删除

// 查询
GetRequest request = new GetRequest();
request.index("user").id("1");
GetResponse documentFields = client.get(request, RequestOptions.DEFAULT);
System.out.println(documentFields.getSource());

// 删除
DeleteRequest deleteRequest = new DeleteRequest();
deleteRequest.index("user").id("1");
DeleteResponse deleteResponse = client.delete(deleteRequest, RequestOptions.DEFAULT);
System.out.println(deleteResponse.getResult());

批量新增和删除

        BulkRequest bulkRequest = new BulkRequest();
        bulkRequest.add(new IndexRequest().index("user").id("2").source(JSON.toJSONString(new User("梁朝伟", "男", 62L)), XContentType.JSON));
        bulkRequest.add(new IndexRequest().index("user").id("3").source(JSON.toJSONString(new User("黎明", "男", 58L)), XContentType.JSON));
        bulkRequest.add(new IndexRequest().index("user").id("4").source(JSON.toJSONString(new User("郭富城", "男", 55L)),XContentType.JSON));
        bulkRequest.add(new IndexRequest().index("user").id("5").source(JSON.toJSONString(new User("刘亦菲", "女", 28L)), XContentType.JSON));
        BulkResponse bulkResponse = client.bulk(bulkRequest, RequestOptions.DEFAULT);

// 批量删除
        BulkRequest bulkRequest = new BulkRequest();
        bulkRequest.add(new DeleteRequest().index("user").id("2"));
        bulkRequest.add(new DeleteRequest().index("user").id("3"));
        bulkRequest.add(new DeleteRequest().index("user").id("4"));
        bulkRequest.add(new DeleteRequest().index("user").id("5"));
        BulkResponse response = client.bulk(bulkRequest, RequestOptions.DEFAULT);

全量查询

        SearchRequest searchRequest = new SearchRequest();
        searchRequest.indices("user")
                .source(new SearchSourceBuilder().query(QueryBuilders.matchAllQuery()));
        SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);
        for (SearchHit hit : searchResponse.getHits()) {
            System.out.println(hit.getSourceAsString());
        }

对于其他的查询,需要修改“QueryBuilders.matchAllQuery()”

条件查询、排序、分页、指定查询字段

        SearchRequest searchRequest = new SearchRequest();
        searchRequest.indices("user");

        // 排除的字段
        String[] excludes = {};
        // 查询的字段
        String[] includes = {"name"};
        searchRequest.source(new SearchSourceBuilder()
                // 条件查询
                .query(QueryBuilders.termQuery("sex", "男"))
                // 指定查询的字段
                .fetchSource(includes, excludes)
                // 排序
                .sort("age", SortOrder.DESC)
                // 分页
                .from(0).size(2));
        SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);
        for (SearchHit hit : searchResponse.getHits()) {
            System.out.println(hit.getSourceAsString());
        }

组合查询、高亮显示

注意:中文自动分词,可模糊搜索。如:文章来源地址https://www.toymoban.com/news/detail-597015.html

must(QueryBuilders.matchQuery("name", "亦菲"))
        SearchRequest searchRequest = new SearchRequest();
        searchRequest.indices("user");
        searchRequest.source(
                new SearchSourceBuilder().query(
                        QueryBuilders.boolQuery()
                                // and条件
                                //.must(QueryBuilders.matchQuery("age", 28))
                                //.must(QueryBuilders.matchQuery("sex", "女"))
                                //.must(QueryBuilders.matchQuery("name", "亦菲"))
                                // or条件
                                .should(QueryBuilders.matchQuery("age", 28))
                                .should(QueryBuilders.matchQuery("age", 58))
                ).highlighter(
                        new HighlightBuilder()
                                .preTags("<font color='red'>")
                                .postTags("</font>")
                                .field("name")
                )
        );
        SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);
        for (SearchHit hit : searchResponse.getHits()) {
            System.out.println(hit.getSourceAsString());
        }

范围查询

        SearchRequest searchRequest = new SearchRequest();
        searchRequest.indices("user");
        searchRequest.source(
                new SearchSourceBuilder().query(
                        QueryBuilders.rangeQuery("age").gte(18).lt(30)
                )
        );
        SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);
        for (SearchHit hit : searchResponse.getHits()) {
            System.out.println(hit.getSourceAsString());
        }

聚合查询

        // 聚合查询
        SearchRequest searchRequest = new SearchRequest();
        searchRequest.indices("user");
        searchRequest.source(
                new SearchSourceBuilder().aggregation(
                        // 最小值
                        //AggregationBuilders.min("minAge").field("age")
                        // 分组统计
                        AggregationBuilders.terms("ageGroup").field("age")
                )
        );
        SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);

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

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

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

相关文章

  • Elasticsearch学习-ES中文档的基本操作

    一、什么是文档 文档是索引中数据的基本单位,类似于关系型数据库中的一条记录,文档的在ES中以json的数据格式存储。 当一条记录存储到ES中后,ES会为每个文档添加一些除文档内容之外的其他属性信息,用来描述该文档。常用的以用来描述文档的属性有一下这些: _index

    2023年04月08日
    浏览(43)
  • Elasticsearch使用系列-ES增删查改基本操作+ik分词

    ES是一个NoSql数据库应用。和其他数据库一样,我们为了方便操作查看它,需要安装一个可视化工具 Kibana。 官网: https://www.elastic.co/cn/downloads/kibana 和前面安装ES一样,选中对应的环境下载,这里选择windows环境,注意安装的版本一定要和ES的版本一致,不然可能会启动不起来。

    2024年02月01日
    浏览(56)
  • elasticsearch 7.9.3知识归纳整理(二)之 es基本原理及使用kibana操作es的常见命令

    一、es的基本原理与基础概念 1.1 倒排索引 倒排索引 源于实际应用中需要根据属性的值来查找记录。这种索引表中的每一项都包括一个属性值和具有该属性值的各记录的地址。由于不是由记录来确定属性值,而是由属性值来确定记录的位置,因而称为倒排索引(inverted index)。带

    2024年02月12日
    浏览(49)
  • Java SpringBoot API 实现ES(Elasticsearch)搜索引擎的一系列操作(超详细)(模拟数据库操作)

    小编使用的是elasticsearch-7.3.2 基础说明: 启动:进入elasticsearch-7.3.2/bin目录,双击elasticsearch.bat进行启动,当出现一下界面说明,启动成功。也可以访问http://localhost:9200/ 启动ES管理:进入elasticsearch-head-master文件夹,然后进入cmd命令界面,输入npm run start 即可启动。访问http

    2024年02月04日
    浏览(57)
  • 【ES】---ES的基本操作

    ES有4种客户端,分别是:Jest client、Rest client、Transport client、Node client。 ES支持两种协议 HTTP协议,支持的客户端有Jest client和Rest client Native Elasticsearch binary协议,也就是Transport client【7.0弃用】和Node client【2.3弃用】 Jest client非官方支持,在ES5.0之前官方提供的客户端只有Trans

    2024年02月08日
    浏览(41)
  • java 操作es 的基本操作

    创建索引 创建索引别名 索引的相关设置 查询索引数据 bulk 导入数据 持续更新中~ pom的坐标

    2024年01月20日
    浏览(43)
  • es基本操作使用

    es映射关系(对应数据库) ———————————————— 1.创建索引 创建索引时指定属性名,即映射关系 2.修改索引 3.删除索引 eg:delete /test/type1/1,表示删除test索引库中类型(表)为type1中id属性为1的document(记录)。 4.查询索引 表示查询某一个属性名为name的值为张

    2024年02月15日
    浏览(35)
  • 一些es的基本操作

    用postMan: 给名为population_portrait_hash_seven的索引增加了一个text类型的字段。 用chrome插件Elasticvue 的Rest接口,本质上应该也是发HTTP請求: 给这个接口增加了一个keyword类型的字段。 好像直接删除是不支持的。要建个新索引,再使用 Reindex API 将数据从旧索引复制到新索引,排除不

    2024年01月25日
    浏览(44)
  • Es的索引操作(代码中的基本操作)

    // 1.创建客户端对象 RestHighLevelClient client = new RestHighLevelClient( RestClient.builder(new HttpHost(\\\"localhost\\\", 9200, \\\"http\\\")) ); (1)创建索引 // 创建索引 - 请求对象 CreateIndexRequest request = new CreateIndexRequest(\\\"user\\\"); // 发送请求,获取响应 CreateIndexResponse response = client.indices().create(request, RequestOp

    2024年02月13日
    浏览(48)
  • ES基本操作(postman篇)

    关系型数据库 - Databases(库) - Tables(表) - Rows(行) - Columns(列)。 Elasticsearch - Indeces(索引) - Types(类型) - Documents(文档) - Fields(属性)。 需要注意的是:type的概念在es7.0之后已经删除了。  以下仅做刚入门学习使用,工作中基本不会使用这个方式 创建Index 其中shopping是Index的名称,注

    2024年02月12日
    浏览(45)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包