Elasticsearch实现增删改查

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

调用elasticsearch通常使用restful风格请求,这里记录一些常用的Java API和Postman Url

Java API调用Es

1. 查询总文档数

@Test
    void getAllCount() {
//        RestHighLevelClient client=new RestHighLevelClient(RestClient.builder(new HttpHost("192.168.32.3",9200,"http")));
        RestHighLevelClient client=new RestHighLevelClient(RestClient.builder(new HttpHost("192.168.32.1",9200,"http")));
        SearchRequest searchRequest=new SearchRequest();
        SearchSourceBuilder searchSourceBuilder=new SearchSourceBuilder();
        searchSourceBuilder.query(QueryBuilders.matchAllQuery());
        searchRequest.indices("_all");
        searchRequest.source(searchSourceBuilder);
        try {
            SearchResponse searchResponse=client.search(searchRequest, RequestOptions.DEFAULT);
            long count=searchResponse.getHits().getTotalHits().value;
            System.out.println("192.168.32.3的文档总数量为: "+count);
        } catch (IOException e) {
            e.printStackTrace();
        }

    }

2.批量插入100w数据

    @Test
    public void setESBatchData() throws IOException {
        RestHighLevelClient client=new RestHighLevelClient(RestClient.builder(new HttpHost("192.168.32.2",9200,"http")));
        BulkRequest request=new BulkRequest();
        request.timeout("10m");
        long startTime = System.currentTimeMillis();
        for (int i = 1; i < 1000000; i++) {
//            Map<String, String> jsonMap = new HashMap<>();
            String name="test"+i;
            int age=i;
//            jsonMap.put("name", "test"+i);
//            jsonMap.put("age", String.valueOf(i));
//            String jsonString = formatAsJSON(jsonMap);
            IndexRequest indexRequest=new IndexRequest("my_index").source("name",name,"age",age);
            request.add(indexRequest);
            if(i%10000==0){
                BulkResponse response=client.bulk(request,RequestOptions.DEFAULT);
                request=new BulkRequest();
                if (response.hasFailures()) {
                    // 处理失败的文档
                    System.out.println("第"+i/10000+"次批量插入失败");
                } else {
                    System.out.println("第"+i/10000+"次批量插入成功,已插入"+i/10000+"w条");
                    // 所有文档都已成功插入
                }
            }
        }
        long endTime = System.currentTimeMillis();
        double timeDifference = (endTime - startTime)/1000;
        System.out.println("两次系统时间差:" + timeDifference + " 秒");
//        RequestOptions.Builder builder = RequestOptions.DEFAULT.toBuilder();
//        builder.setHttpAsyncResponseConsumerFactory(new HttpAsyncResponseConsumerFactory.HeapBufferedResponseConsumerFactory(500 * 1024 * 1024));
//        RequestConfig config=RequestConfig.custom().setConnectTimeout(60000).setSocketTimeout(600000).build();
//        RequestOptions options=builder.setRequestConfig(config).build();
    }

3.关闭指定索引

    @Test
    public void closeESIndex() throws IOException {
        //创建es客户端,建立连接
        RestHighLevelClient client=new RestHighLevelClient(RestClient.builder(new HttpHost("192.168.32.1",9200,"http")));
//        String indexName=".ds-ilm-history-5-2023.06.29-000001";
        String indexName=".ds-.logs-deprecation.elasticsearch-default-2023.06.29-000001";
//        String indexName="my_index";
        //根据操作类型创建请求
        CloseIndexRequest request=new CloseIndexRequest(indexName);
        //执行请求,返回结果
        AcknowledgedResponse response=client.indices().close(request,RequestOptions.DEFAULT);
        if (response.isAcknowledged()){
            System.out.println("索引关闭成功");
        }else {
            System.out.println("索引关闭失败");
        }
        //释放连接资源
        client.close();
    }

4.添加文档

@Test
    public void addES() throws IOException {
        RestHighLevelClient client=new RestHighLevelClient(RestClient.builder(new HttpHost("192.168.32.3",9200,"http")));
        String jsonDocument = "{ \"name\": \"test14\", \"age\": \"140\" }";
        IndexRequest request=new IndexRequest("my_index").id("14").source(jsonDocument, XContentType.JSON);
        IndexResponse response=client.index(request,RequestOptions.DEFAULT);
        if(response.getResult()== IndexResponse.Result.CREATED){
            System.out.println("文档创建成功");
        }else if(response.getResult()==IndexResponse.Result.UPDATED){
            System.out.println("文档更新成功");
        }
        client.close();
    }

5.修改文档

 @Test
    public void updateES() throws IOException {
        RestHighLevelClient client=new RestHighLevelClient(RestClient.builder(new HttpHost("192.168.32.3",9200,"http")));
        UpdateRequest request=new UpdateRequest("my_index","_doc","14");
        Map<String,String> updateInfo=new HashMap<>();
        request.doc("name","test14_update");
        UpdateResponse response=client.update(request,RequestOptions.DEFAULT);
        if(response.getResult()== DocWriteResponse.Result.UPDATED){
            System.out.println("修改文档成功");
        }
        client.close();
    }

6.删除文档

 @Test
    public void deleteES() throws IOException {
        RestHighLevelClient client=new RestHighLevelClient(RestClient.builder(new HttpHost("192.168.32.3",9200,"http")));
        DeleteRequest request=new DeleteRequest("my_index","14");
        DeleteResponse response=client.delete(request,RequestOptions.DEFAULT);
        if(response.getResult()== DocWriteResponse.Result.DELETED){
            System.out.println("删除文档成功");
        }
    }

Postman请求(DSL)

1.查询全量文档

POST http://192.168.32.2:9201/_search?pretty
{
    "size": 1000,
    "query": {
        "match_all": {}
    }
}

2.删除全部文档(保留索引)

POST http://192.168.32.2:9201/_all/_delete_by_query
{
    "query": {
        "match_all": {}
    }
}

3.新增文档

PUT http://192.168.32.2:9201/my_index/_doc/1
{
    "name": "test1",
    "age": 1
}

4.查看x-pack许可证信息

GET http://192.168.32.2:9201/_xpack?pretty

5.查看集群节点

GET http://192.168.32.2:9200/_cat/nodes?v

6.查看节点信息

GET http://192.168.32.1:9201

7.查询文档总数

GET http://192.168.32.2:9201/_search?pretty
{
    "size": 0,
    "aggs": {
        "total_documents": {
            "value_count": {
                "field": "_id"
            }
        }
    }
}

8.创建索引

PUT http://192.168.32.2:9200/test_index
{
    "mappings": {
        "properties": {
            "name": {
                "type": "text"
            },
            "age": {
                "type": "long"
            }
        }
    }
}

9.删除索引(包括数据)

DELETE http://192.168.32.2:9201/my_index

10.查询集群索引

GET http://192.168.32.2:9201/_cat/indices?v

11.查看指定索引结构

GET http://192.168.32.2:9200/my_index/_mapping

12.开启指定索引

POST http://192.168.32.2:9201/my_index/_open

13.关闭指定索引

POST http://192.168.32.2:9201/my_index/_close

14.定义远程集群

POST http://192.168.32.2:9201/my_index/_close

15.查看远程集群

GET http://192.168.32.2:9201/_remote/info

16.删除远程集群

PUT http://192.168.32.2:9201/_cluster/settings
{
  "persistent": {
    "cluster": {
      "remote": {
        "es-source": {
          "seeds": null 
        }
      }
    }
  }
}

17.开启CCR(指定索引)

PUT http://192.168.32.2:9201/my_index/_ccr/follow
{
    "remote_cluster": "source",
    "leader_index": "my_index"
}

18.暂停CCR

POST http://192.168.32.2:9201/my_index/_ccr/pause_follow

19.删除CCR

POST http://192.168.32.2:9201/my_index/_ccr/unfollow

删除索引也会自动删除CCR文章来源地址https://www.toymoban.com/news/detail-677128.html

20.查看CCR信息

POST http://192.168.32.2:9201/my_index/_ccr/info

21.自动跟随增量同步索引(auto follow)

PUT http://192.168.32.2:9201/_ccr/auto_follow/beats
{
    "remote_cluster": "source",
    "leader_index_patterns": [
        "*"
    ]
}

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

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

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

相关文章

  • 搜索引擎(大数据检索)论述[elasticsearch原理相关]

    首先需要大致知道搜索引擎有大致几类:1.全文搜索引擎 2.垂直搜索引擎 3.类目搜索引擎等。 1.全文搜索引擎:是全文本覆盖的,百度,google等都是全文本搜索,就是我搜一个词项“方圆”,那么这个词项可以是数字平方的概念,可以是一个人名,可以是一首歌等,所有的相

    2023年04月08日
    浏览(56)
  • 【搜索引擎2】实现API方式调用ElasticSearch8接口

    1、理解ElasticSearch各名词含义 ElasticSearch对比Mysql Mysql数据库 Elastic Search Database 7.X版本前有Type,对比数据库中的表,新版取消了 Table Index Row Document Column mapping Elasticsearch是使用Java开发的,8.1版本的ES需要JDK17及以上版本;es默认带有JDK,如果安装es环境为java8,则会默认使用自带

    2024年04月17日
    浏览(41)
  • 基于Elasticsearch与Hbase组合框架的大数据搜索引擎

    本项目为学校大数据工程实训项目,共开发4周,答辩成绩不错。代码仓库放文章尾,写的不好,代码仅供参考。 对于结构化数据 ,因为它们具有特定的结构,所以我们一般都是可以通过关系型数据库(MySQL,Oracle 等)的二维表(Table)的方式存储和搜索,也可以建立索引。

    2024年02月09日
    浏览(65)
  • Elasticsearch (ES) 搜索引擎: 数据类型、动态映射、多类型(子字段)

    原文链接:https://xiets.blog.csdn.net/article/details/132348634 版权声明:原创文章禁止转载 专栏目录:Elasticsearch 专栏(总目录) ES 映射字段的 数据类型 ,官网文档参考:Field data types。 下面是 ES 常用的一些基本数据类型。 字符串 类型: keyword :类型。 text :文本类型。

    2024年03月23日
    浏览(67)
  • 用SpringBoot和ElasticSearch实现网盘搜索引擎,附源码,详细教学

    可以扫描小程序码体验,切换到搜索Tabbar。 小程序端界面实现 网页端实现界面 对外提供的api 接口声明 接口实现 执行搜索策略。 提供2种搜索策略,分别是MySQL和ElasticSearch搜索策略。在配置文件进行配置搜索策略。 搜索类型枚举 配置文件中的搜索策略相关配置 es搜索策略实

    2024年02月08日
    浏览(42)
  • elasticsearch[五]:深入探索ES搜索引擎的自动补全与拼写纠错:如何实现高效智能的搜索体验

    前一章讲了搜索中的拼写纠错功能,里面一个很重要的概念就是莱文斯坦距离。这章会讲解搜索中提升用户体验的另一项功能 - [自动补全]。本章直接介绍 ES 中的实现方式以及真正的搜索引擎对自动补全功能的优化。 大家对上面的这个应该都不陌生,搜索引擎会根据你输入的

    2024年01月24日
    浏览(61)
  • elasticsearch(ES)分布式搜索引擎04——(数据聚合,自动补全,数据同步,ES集群)

    **聚合(aggregations)**可以让我们极其方便的实现对数据的统计、分析、运算。例如: 什么品牌的手机最受欢迎? 这些手机的平均价格、最高价格、最低价格? 这些手机每月的销售情况如何? 实现这些统计功能的比数据库的sql要方便的多,而且查询速度非常快,可以实现近

    2024年02月08日
    浏览(51)
  • 如何使用内网穿透工具实现Java远程连接本地Elasticsearch搜索分析引擎

    简单几步,结合Cpolar 内网穿透工具实现Java 远程连接操作本地分布式搜索和数据分析引擎Elasticsearch。 Cpolar内网穿透提供了更高的安全性和隐私保护,通过使用加密通信通道,Cpolar技术可以确保数据传输的安全性,这为用户和团队提供了更可靠的保护,使他们能够放心地处理和

    2024年02月04日
    浏览(53)
  • 微服务04 分布式搜索引擎 elasticsearch DSL数据聚合 自动补全 数据同步 集群 Sentinel

    聚合(aggregations)可以让我们极其 方便的实现对数据的统计、分析、运算 。例如: 什么品牌的手机最受欢迎? 这些手机的平均价格、最高价格、最低价格? 这些手机每月的销售情况如何? 实现这些 统计功能的比数据库的sql要方便的多,而且查询速度非常快 ,可以实现近

    2024年02月11日
    浏览(51)
  • 分布式搜索和分析引擎Elasticsearch本地部署结合内网穿透实现远程访问

    本文主要介绍如何在Windows系统部署分布式搜索和分析引擎Elasticsearch,并结合Cpolar内网穿透工具实现公网远程连接和访问本地服务。 Elasticsearch是一个基于Lucene库的分布式搜索和分析引擎,它提供了一个分布式、多租户的全文搜索引擎,具有HTTP Web接口和无模式JSON文档,同时也

    2024年01月21日
    浏览(51)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包