Elasticsearch实现增删改查

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

Java API调用Es

1. 查询总文档数

java 复制代码
@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数据

java 复制代码
    @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.关闭指定索引

java 复制代码
    @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.添加文档

java 复制代码
@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.修改文档

java 复制代码
 @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.删除文档

java 复制代码
 @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.查询全量文档

java 复制代码
POST http://192.168.32.2:9201/_search?pretty
{
    "size": 1000,
    "query": {
        "match_all": {}
    }
}

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

java 复制代码
POST http://192.168.32.2:9201/_all/_delete_by_query
{
    "query": {
        "match_all": {}
    }
}

3.新增文档

java 复制代码
PUT http://192.168.32.2:9201/my_index/_doc/1
{
    "name": "test1",
    "age": 1
}

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

java 复制代码
GET http://192.168.32.2:9201/_xpack?pretty

5.查看集群节点

java 复制代码
GET http://192.168.32.2:9200/_cat/nodes?v

6.查看节点信息

java 复制代码
GET http://192.168.32.1:9201

7.查询文档总数

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

8.创建索引

java 复制代码
PUT http://192.168.32.2:9200/test_index
{
    "mappings": {
        "properties": {
            "name": {
                "type": "text"
            },
            "age": {
                "type": "long"
            }
        }
    }
}

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

java 复制代码
DELETE http://192.168.32.2:9201/my_index

10.查询集群索引

java 复制代码
GET http://192.168.32.2:9201/_cat/indices?v

11.查看指定索引结构

java 复制代码
GET http://192.168.32.2:9200/my_index/_mapping

12.开启指定索引

java 复制代码
POST http://192.168.32.2:9201/my_index/_open

13.关闭指定索引

java 复制代码
POST http://192.168.32.2:9201/my_index/_close

14.定义远程集群

java 复制代码
POST http://192.168.32.2:9201/my_index/_close

15.查看远程集群

java 复制代码
GET http://192.168.32.2:9201/_remote/info

16.删除远程集群

java 复制代码
PUT http://192.168.32.2:9201/_cluster/settings
{
  "persistent": {
    "cluster": {
      "remote": {
        "es-source": {
          "seeds": null 
        }
      }
    }
  }
}

17.开启CCR(指定索引)

java 复制代码
PUT http://192.168.32.2:9201/my_index/_ccr/follow
{
    "remote_cluster": "source",
    "leader_index": "my_index"
}

18.暂停CCR

java 复制代码
POST http://192.168.32.2:9201/my_index/_ccr/pause_follow

19.删除CCR

java 复制代码
POST http://192.168.32.2:9201/my_index/_ccr/unfollow

删除索引也会自动删除CCR

20.查看CCR信息

java 复制代码
POST http://192.168.32.2:9201/my_index/_ccr/info

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

java 复制代码
PUT http://192.168.32.2:9201/_ccr/auto_follow/beats
{
    "remote_cluster": "source",
    "leader_index_patterns": [
        "*"
    ]
}
相关推荐
2401_883041083 小时前
新锐品牌电商代运营公司都有哪些?
大数据·人工智能
青云交3 小时前
大数据新视界 -- 大数据大厂之 Impala 性能优化:融合机器学习的未来之路(上 (2-1))(11/30)
大数据·计算资源·应用案例·数据交互·impala 性能优化·机器学习融合·行业拓展
Json_181790144806 小时前
An In-depth Look into the 1688 Product Details Data API Interface
大数据·json
Qspace丨轻空间8 小时前
气膜场馆:推动体育文化旅游创新发展的关键力量—轻空间
大数据·人工智能·安全·生活·娱乐
Elastic 中国社区官方博客9 小时前
如何将数据从 AWS S3 导入到 Elastic Cloud - 第 3 部分:Elastic S3 连接器
大数据·elasticsearch·搜索引擎·云计算·全文检索·可用性测试·aws
掘金-我是哪吒9 小时前
微服务mysql,redis,elasticsearch, kibana,cassandra,mongodb, kafka
redis·mysql·mongodb·elasticsearch·微服务
Aloudata10 小时前
从Apache Atlas到Aloudata BIG,数据血缘解析有何改变?
大数据·apache·数据血缘·主动元数据·数据链路
水豚AI课代表10 小时前
分析报告、调研报告、工作方案等的提示词
大数据·人工智能·学习·chatgpt·aigc
研究是为了理解11 小时前
Git Bash 常用命令
git·elasticsearch·bash
拓端研究室TRL13 小时前
【梯度提升专题】XGBoost、Adaboost、CatBoost预测合集:抗乳腺癌药物优化、信贷风控、比特币应用|附数据代码...
大数据