ElasticSearch 学习记录(版本7.12.1)

news/2024/7/7 5:49:46 标签: java, elasticsearch

ElasticSearch 学习记录(版本7.12.1)

  • 注入配置
java">package com.xiaozhi.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 ElasticSearchClientConfig {

    @Bean
    public RestHighLevelClient restHighLevelClient(){
        RestHighLevelClient client = new RestHighLevelClient(
                RestClient.builder(
                        new HttpHost("127.0.0.1", 9200, "http")));
        return client;
    }
}
  • 编写测试方法
java">package com.xiaozhi;

import com.alibaba.fastjson.JSON;
import com.xiaozhi.pojo.User;
import org.elasticsearch.action.admin.indices.delete.DeleteIndexRequest;
import org.elasticsearch.action.bulk.BulkRequest;
import org.elasticsearch.action.bulk.BulkResponse;
import org.elasticsearch.action.delete.DeleteRequest;
import org.elasticsearch.action.delete.DeleteResponse;
import org.elasticsearch.action.get.GetRequest;
import org.elasticsearch.action.get.GetResponse;
import org.elasticsearch.action.index.IndexRequest;
import org.elasticsearch.action.index.IndexResponse;
import org.elasticsearch.action.search.SearchRequest;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.action.support.master.AcknowledgedResponse;
import org.elasticsearch.action.update.UpdateRequest;
import org.elasticsearch.action.update.UpdateResponse;
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.elasticsearch.common.unit.TimeValue;
import org.elasticsearch.common.xcontent.XContentType;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.index.query.TermQueryBuilder;
import org.elasticsearch.search.SearchHit;
import org.elasticsearch.search.builder.SearchSourceBuilder;
import org.elasticsearch.search.fetch.subphase.FetchSourceContext;
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;

import java.io.IOException;
import java.sql.Time;
import java.util.ArrayList;
import java.util.concurrent.TimeUnit;

@SpringBootTest
class XiaozhiEsApiApplicationTests {

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

    //测试索引的创建 Request
    @Test
    void testCreateIndex() throws IOException {
        //1.创建索引请求
        CreateIndexRequest request = new CreateIndexRequest("xiaozhi_index");
        //2.执行创建请求IndicesClient,请求后获得响应
        CreateIndexResponse createIndexResponse =
                client.indices().create(request, RequestOptions.DEFAULT);
        System.out.println(createIndexResponse);

    }

    //测试获取索引
    @Test
    void testExistIndex() throws IOException {
        GetIndexRequest request = new GetIndexRequest("xiaozhi_index");
        boolean exists = client.indices().exists(request, RequestOptions.DEFAULT);
        System.out.println(exists);
    }

    //测试删除索引
    @Test
    void testDeleteIndex() throws IOException {
        DeleteIndexRequest xiaozhi_index = new DeleteIndexRequest("xiaozhi_index");
        AcknowledgedResponse delete = client.indices().delete(xiaozhi_index, RequestOptions.DEFAULT);
        System.out.println(delete.isAcknowledged());
    }

    //测试添加文档
    @Test
    void testAddDocument() throws IOException {
        User user = new User("小志", 25);
        //创建请求
        IndexRequest request = new IndexRequest("xiaozhi_index");
        //规则
        request.id("1");
        request.timeout(TimeValue.timeValueSeconds(1));
        request.timeout("1s");

        //将我们数据放入请求 json
        IndexRequest source = request.source(JSON.toJSONString(user), XContentType.JSON);

        //客户端发送请求
        IndexResponse indexResponse = client.index(request, RequestOptions.DEFAULT);
        System.out.println(indexResponse.toString());

    }

    // 获取文档,判断是否存在
    @Test
    void testIsExists() throws IOException {
        GetRequest getRequest = new GetRequest("xiaozhi_index", "1");
        //不获取咱们返回的_source 的上下文了
        getRequest.fetchSourceContext(new FetchSourceContext(false));
        getRequest.storedFields("_none_");

        boolean exists = client.exists(getRequest, RequestOptions.DEFAULT);
        System.out.println(exists);
    }

    //获取文档信息
    @Test
    void testGetDocument() throws IOException {
        GetRequest getRequest = new GetRequest("xiaozhi_index", "1");
        GetResponse getResponse = client.get(getRequest, RequestOptions.DEFAULT);
        //打印文档的内容
        System.out.println(getResponse.getSourceAsString());
    }

    //更新文档信息
    @Test
    void testUpdateRequest() throws IOException {
        UpdateRequest updateRequest = new UpdateRequest("xiaozhi_index", "1");
        updateRequest.timeout("1s");

        User user = new User("小志疯狂学习", 28);
        updateRequest.doc(JSON.toJSONString(user),XContentType.JSON);
        UpdateResponse updateResponse = client.update(updateRequest, RequestOptions.DEFAULT);

        System.out.println(updateResponse);

    }
    //删除文档记录
    @Test
    void testdeleteRequest() throws IOException {
        DeleteRequest deleteRequest = new DeleteRequest("xiaozhi", "5");
        deleteRequest.timeout("1s");
        DeleteResponse deleteResponse = client.delete(deleteRequest, RequestOptions.DEFAULT);
        System.out.println(deleteResponse.status());
    }

    //特殊的,批量插入数据!
    @Test
    void testBulkRequest() throws IOException{
        BulkRequest bulkRequest = new BulkRequest();
        bulkRequest.timeout("10s");

        ArrayList<User> userList = new ArrayList<>();
        userList.add(new User("xiaozhi1",11));
        userList.add(new User("xiaozhi2",12));
        userList.add(new User("xiaozhi3",13));
        userList.add(new User("xiaozhi4",14));
        userList.add(new User("xiaozhi5",15));

        //批处理请求
        for (int i = 0; i < userList.size(); i++) {
            bulkRequest.add(
                    new IndexRequest("xiaozhi")
                    .id("" + (i+1))
                    .source(JSON.toJSONString(userList.get(i)),XContentType.JSON));
        }
        BulkResponse bulkResponse = client.bulk(bulkRequest, RequestOptions.DEFAULT);
        //查看结果是否失败
        System.out.println(bulkResponse.hasFailures());

    }

    //查询
    @Test
    void testSearch() throws IOException {
        SearchRequest searchRequest = new SearchRequest("xiaozhi");
        //构建搜索条件
        SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
        //查询条件 QueryBuilders 工具来实现
        TermQueryBuilder termQueryBuilder = QueryBuilders.termQuery("name", "xiaozhi1");
        sourceBuilder.query(termQueryBuilder);
        sourceBuilder.timeout(new TimeValue(60, TimeUnit.SECONDS));

        searchRequest.source(sourceBuilder);
        SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);
        System.out.println(JSON.toJSONString(searchResponse.getHits()));
        System.out.println("===========================================");
        for (SearchHit hit : searchResponse.getHits().getHits()) {
            System.out.println(hit.getSourceAsString());
        }
    }












}


http://www.niftyadmin.cn/n/730314.html

相关文章

saphana 常用sql语法整理(类似oracle需要创建schema)

常用语法- 在这里插入代码查询 select * from EBA.TEST_TABLE; 更新 update EBA.TEST_TABLE set NAME 小志呀 where NAME 小明; 添加 insert into EBA.TEST_TABLE values (4,笔记本,100); 删除 delete from EBA.TEST_TABLE where ID 2;创建schema create schema eba;创建指…

前端基础-for循环-

学习目标&#xff1a; 前端for循环的使用 例子&#xff1a; let arr ["小明","小花","语文","数学","地理"]for (let i 0; i < arr.length; i) {console.log("第"i"遍循环" "-----" …

JS forEach循环

学习目标&#xff1a; JS forEach循环 eg&#xff1a; let arr ["小明","小花","语文","数学","地理"]arr.forEach(iter >{console.log(iter)})

Maven安装并配置环境变量

maven 下载 首先进入maven的官网https://maven.apache.org/在左侧选择Download下载现在的版本信息(推荐下载最新版本)如图 : 下载完成解压到你所需要的目录下即可 maven配置环境变量 右键单击我的电脑选择属性,选择高级系统保护,然后点击环境变量 在系统变量中新建变量名MA…

mysql语句整理(增删改查分组起别名...)

sql语句整理 1 创建数据库 CREATE DATABASE <数据库名>;2 删除数据库 drop database <数据库名>;3 使用数据库 use <数据库名>;4 创建数据库表 CREATE TABLE <表名>5 删除数据表 DROP TABLE <表名>;6 插入数据(增加数据) INSERT INTO <…

Failed to start ntpd.service: Unit not found.

在root用户下操作 这种情况一般一种是你的服务没有开启 [roothadoop102 lizhi]# systemctl status ntpd ● ntpd.service - Network Time ServiceLoaded: loaded (/usr/lib/systemd/system/ntpd.service; disabled; vendor preset: disabled)Active: inactive (dead)如果是这…

注意!数据库迁移上云,这3件事你必须知道

摘要&#xff1a; 知彼知己&#xff0c;百战不殆&#xff01; 兵法有云&#xff0c;知彼知己&#xff0c;百战不殆&#xff01;在全民业务上云的今天&#xff0c;数据库这个大后方作为业务和应用支撑的弹药库&#xff0c;重要性就不言而喻了。然而数据库迁移上云的正确姿势&am…

【网媒】如何有效减少运维工作量?

互联网技术的迅猛发展&#xff0c;手机、平板、智能电视等各种输入终端的普及&#xff0c;让互联网数据呈现出爆炸性的增长。面对海量的数据&#xff0c;如何能以更加稳定、快速的方式存储海量数据&#xff0c;以及从中挖掘出有价值的信息&#xff0c;成为很多企业面临的新课堂…