ElasticSearch学习API及集成JAVA使用介绍

本文详细介绍了如何使用ElasticSearch的API进行索引创建、文档数据操作、更新以及查询,包括HTTP和Java两种方式。内容涵盖创建索引、删除指定索引和文档、局部与全量更新文档、多条件查询、聚合查询等核心功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ElasticSearch学习API及集成JAVA使用介绍

GitHub本文代码

创建

创建索引

Http

PUT {ip}:{port}/{indexName}
127.0.0.1:9200/shopping

Java
public static void createIndex() {
   
   
        //创建客户端
        RestHighLevelClient client = EsUtils.createES();
        try {
   
   
            CreateIndexRequest request=new CreateIndexRequest("users");
            CreateIndexResponse response = client.indices().create(request, RequestOptions.DEFAULT);
            //返回状态
            boolean ack = response.isAcknowledged();
            if(ack){
   
   
                log.info("创建索引成功");
            }else {
   
   
                log.info("创建索引失败");
            }
        } catch (IOException e) {
   
   
            e.printStackTrace();
        } finally {
   
   
            //关闭客户端
            EsUtils.closeES(client);
        }
    }

创建文档数据

Http

文档ID自定义
PUT {ip}:{port}/{indexName} /_doc / {自定义文档ID}
127.0.0.1:9200/shopping/_doc/1

文档ID自动生成
{ip}:{port}/{indexName} /_doc

body json格式

{
   
   
	"name": "腾讯视频",
	"url": "www.tengxun.com"
}
Java
public static void CreateDoc() {
   
   
        //创建客户端
        RestHighLevelClient client = EsUtils.createES();
        try {
   
   
            IndexRequest request = new IndexRequest();
            //自定义文档数据ID
            request.index("users").id("1");
            User user = new User("test", 11, "男");
            //文档数据保存必须JSON
            ObjectMapper mapper = new ObjectMapper();
            String userJson = mapper.writeValueAsString(user);
            request.source(userJson, XContentType.JSON);
            //请求创建
            IndexResponse response = client.index(request, RequestOptions.DEFAULT);
            //响应
            DocWriteResponse.Result result = response.getResult();
            System.out.println(result);
        } catch (IOException e) {
   
   
            e.printStackTrace();
        } finally {
   
   
            EsUtils.closeES(client);
        }
    }
批量创建
	public static void CreateBatchDoc() {
   
   
        //创建客户端
        RestHighLevelClient client = EsUtils.createES();
        try {
   
   
            //封装批量
            BulkRequest request = new BulkRequest();
            request.add(new IndexRequest("users").id("1").source(new ObjectMapper().writeValueAsString(new User("test", 11, "男")),XContentType.JSON));
            request.add(new IndexRequest("users").id("2").source(new ObjectMapper().writeValueAsString(new User("2", 22, "女")),XContentType.JSON));
            request.add(new IndexRequest("users").id("3").source(new ObjectMapper().writeValueAsString(new User("我是3", 20, "女")),XContentType.JSON));
            //请求
            BulkResponse response=client.bulk(request,RequestOptions.DEFAULT);
            //响应
            System.out.println(response.getIngestTook());
            System.out.println(response.status());
            System.out.println(response.getItems());

        } catch (IOException e) {
   
   
            e.printStackTrace();
        } finally {
   
   
            EsUtils.closeES(client);
        }
    }

创建文档数据请求映射体

Http

PUT {ip}:{port}/{indexName} / _mapping
127.0.0.1:9200/shopping/_mapping
Body – json

{
   
   
    "properties": {
   
    //约束存入数据字段 /shopping/_mapping 索引shopping前提是已经创建
        "name": {
   
   //用户名称 配置
            "type":"text",//文本 支持模糊查询、分词查询
            "index":true //name 字段可以索引查询
        },
        "six": {
   
   //性别 配置
            "type":"keyword",//完全匹配 比支持分词查询
            "index":true //支持索引
        },
        "tel": {
   
   //电话号码 配置
            "type":"keyword",//完全匹配 比支持分词查询
            "index":false //不支持索引(不支持查询tel)
        }
    }
}

删除

删除指定索引

Http

DELETE {ip}:{port}/{indexName}
127.0.0.1:9200/shopping

Java
public static void deleteIndexByName(String indexName){
   
   
        //创建客户端
        RestHighLevelClient client = EsUtils.createES();
        try {
   
   
            DeleteIndexRequest request=new DeleteIndexRequest(indexName);
            AcknowledgedResponse response = client.indices().delete(request, RequestOptions.DEFAULT);
            //响应信息
            //返回状态
            boolean ack = response.isAcknowledged();
            if(ack){
   
   
                log.info("删除索引成功")
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值