ES学习四:ES之API使用

学习官方文档

官方文档:https://www.elastic.co/guide/index.html
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
1.原生依赖

<dependency>
    <groupId>org.elasticsearch.client</groupId>
    <artifactId>elasticsearch-rest-high-level-client</artifactId>
    <version>7.6.1</version>
</dependency>

2.对象
在这里插入图片描述
3.分析api方法

配置基本的项目
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

配置类

package com.szq.config;

import org.apache.http.HttpHost;
import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestHighLevelClient;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class ElasticSearchConfig {

    @Bean
    public RestHighLevelClient restHighLevelClient(){
        RestHighLevelClient client = new RestHighLevelClient(
                RestClient.builder( new HttpHost("localhost", 9200, "http")));
        return client;
    }
}

springboot默认配置
在这里插入图片描述
RestClient
在这里插入图片描述

crud索引

package com.szq;

import org.elasticsearch.action.admin.indices.delete.DeleteIndexRequest;
import org.elasticsearch.action.delete.DeleteRequest;
import org.elasticsearch.action.support.master.AcknowledgedResponse;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.client.indices.CreateIndexRequest;
import org.elasticsearch.client.indices.CreateIndexResponse;
import org.elasticsearch.client.indices.GetIndexRequest;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest
class EsApiApplicationTests {

    @Autowired
    @Qualifier("restHighLevelClient")
    private RestHighLevelClient client;

    //创建索引
    @Test
    public void createIndex() throws Exception{
        //1.创建索引请求
        CreateIndexRequest request = new CreateIndexRequest("szq_index");
        //2.执行创建请求
        CreateIndexResponse createIndexResponse = client.indices().create(request, RequestOptions.DEFAULT);
        System.out.println(createIndexResponse);
    }

    //获取索引
    @Test
    public void exitIndex() throws Exception{
        //1.创建索引请求
        GetIndexRequest request = new GetIndexRequest("szq_index");
        //2.执行创建请求
        boolean exists = client.indices().exists(request, RequestOptions.DEFAULT);
        System.out.println(exists);
    }

    //删除索引
    @Test
    public void delIndex() throws Exception{
        //1.创建索引请求
        DeleteIndexRequest request = new DeleteIndexRequest("szq_index");
        //2.执行创建请求
        AcknowledgedResponse delete = client.indices().delete(request, RequestOptions.DEFAULT);
        System.out.println(delete);
    }


}

crud文档

//添加文档
    @Test
    public void addDocument() throws Exception{
        //创建对象
        User user = new User("张三狂徒", 18);
        //创建请求
        IndexRequest request = new IndexRequest("szq_index");
        //put /szq_index/_doc/1
        request.id("1");
        request.timeout(TimeValue.timeValueSeconds(1));
        request.timeout("1s");
        request.source(JSON.toJSONString(user), XContentType.JSON);
        //客户端发送请求
        IndexResponse indexResponse = client.index(request, RequestOptions.DEFAULT);
        //IndexResponse[index=szq_index,type=_doc,id=1,version=1,result=created,seqNo=0,primaryTerm=1,shards={"total":2,"successful":1,"failed":0}]
        System.out.println(indexResponse.toString());
        System.out.println(indexResponse.status());//CREATED
    }

    //获取文档 get/index/doc/1 判断文档是否存在
    @Test
    public void exitDocument() throws Exception{
        GetRequest getRequest = new GetRequest("szq_index", "1");
        //不获取返回的_source上下文,效率更高
        getRequest.fetchSourceContext(new FetchSourceContext(false));
        getRequest.storedFields("_none_");
        boolean exists = client.exists(getRequest, RequestOptions.DEFAULT);
        System.out.println(exists);
    }

    //获取文档信息
    /**
     * {"age":18,"name":"张三狂徒"}
     * {"_index":"szq_index","_type":"_doc","_id":"1","_version":1,"_seq_no":0,"_primary_term":1,"found":true,"_source":{"age":18,"name":"张三狂徒"}}
     * @throws Exception
     */
    @Test
    public void getDocument() throws Exception{
        GetRequest getRequest = new GetRequest("szq_index", "1");
        GetResponse getResponse = client.get(getRequest, RequestOptions.DEFAULT);
        System.out.println(getResponse.getSourceAsString());
        System.out.println(getResponse);
    }

    //更新文档
    @Test
    public void updateDocument() throws Exception{
        UpdateRequest updateRequest = new UpdateRequest("szq_index", "1");
        updateRequest.timeout("1s");
        User user = new User("张三被绳之以法", 20);
        updateRequest.doc(JSON.toJSONString(user),XContentType.JSON);
        UpdateResponse updateResponse = client.update(updateRequest, RequestOptions.DEFAULT);
        System.out.println(updateResponse.status());
    }

    //删除文档
    @Test
    public void delDocument() throws Exception{
        DeleteRequest deleteRequest = new DeleteRequest("szq_index", "1");
        deleteRequest.timeout("1s");
        DeleteResponse deleteResponse = client.delete(deleteRequest, RequestOptions.DEFAULT);
        System.out.println(deleteResponse.status());
    }

    //批量操作 项目都是批量
    @Test
    public void getBatchDocument() throws Exception{
        BulkRequest bulkRequest = new BulkRequest();
        bulkRequest.timeout("10s");
        ArrayList<User> users = new ArrayList<>();
        users.add(new User("张三被抓了",18));
        users.add(new User("张三出狱了",20));
        users.add(new User("张三又进去了",30));

        for (int i = 0; i < users.size(); i++) {
            bulkRequest.add(new IndexRequest("szq_index").id(""+(i+1)).source(JSON.toJSONString(users.get(i)),XContentType.JSON));
        }

        BulkResponse bulkItemResponses = client.bulk(bulkRequest, RequestOptions.DEFAULT);
        System.out.println(bulkItemResponses.hasFailures());
    }

    //搜索
    @Test
    public void search() throws Exception{
        SearchRequest searchRequest = new SearchRequest("szq_index");
        //构建搜索条件
        SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
        searchSourceBuilder.highlighter();
        TermQueryBuilder termQueryBuilder = QueryBuilders.termQuery("name", "张三");
        //查询所有
        //MatchAllQueryBuilder matchAllQueryBuilder = QueryBuilders.matchAllQuery();
        searchSourceBuilder.query(termQueryBuilder);
        //分页
//        searchSourceBuilder.from(1);
//        searchSourceBuilder.size(10);
        searchSourceBuilder.timeout(new TimeValue(60, TimeUnit.SECONDS));
        searchRequest.source(searchSourceBuilder);
        SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);
        SearchHits searchResponseHits = searchResponse.getHits();
        System.out.println(JSON.toJSONString(searchResponseHits));
        SearchHit[] hits = searchResponseHits.getHits();
        Arrays.asList(hits).forEach(search -> {
            System.out.println(JSON.toJSONString(search.getSourceAsMap()));
        });
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值