docker 方式 elasticsearch 8.13 简单例子

news2024/11/20 4:26:07

安装 docker

虚拟机安装 elastic search

安装本地

# 创建 elastic 的网络
docker network create elastic
# 用镜像的方式创建并启动容器
docker run -d --name es --net elastic -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e "xpack.security.enabled=false" -t docker.elastic.co/elasticsearch/elasticsearch:8.13.3

如果安装不成功,报如下的错误

ERROR: Elasticsearch exited unexpectedly, with exit code 78

修改 /etc/sysctl.conf
在文件最后添加一行
vm.max_map_count=262144
使配置生效

sysctl -p

访问 9200,如果出现如下界面,表示成功
在这里插入图片描述

spring boot 的例子

依赖引入

 <dependency>
            <groupId>co.elastic.clients</groupId>
            <artifactId>elasticsearch-java</artifactId>
            <version>8.13.3</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.17.0</version>
        </dependency>

配置 es config

@Configuration
public class ESConfig {
    private String serverUrl = "http://192.168.236.128:9200";
    private String apiKey = "11";

    @Bean
    public ElasticsearchClient getClient(){
        // Create the low-level client
        RestClient restClient = RestClient
                .builder(HttpHost.create(serverUrl))
                .setDefaultHeaders(new Header[]{
                        new BasicHeader("Authorization", "ApiKey " + apiKey)
                })
                .build();

// Create the transport with a Jackson mapper
        ElasticsearchTransport transport = new RestClientTransport(
                restClient, new JacksonJsonpMapper());

// And create the API client
        ElasticsearchClient esClient = new ElasticsearchClient(transport);
        return  esClient;
    }
}

编写测试用例

@SpringBootTest
class DemoApplicationTests {

    private Logger logger = LoggerFactory.getLogger(DemoApplicationTests.class);

    @Autowired
    private ElasticsearchClient esClient;
    private String index = "request_log";
    @Test
    public void test() throws IOException {
//        esClient.indices().create(c -> c.index("request_log"));
    }

    @Test
    public void addData() throws IOException {
        for (int j = 0; j < 1000; j++) {
        RequestLog log = createRandomLog();
             esClient.index(i -> i.index(index).id(log.getId()).document(log));
        }
    }
    @Test
    public void searchId() throws IOException {
        GetResponse<RequestLog> response = esClient.get(r -> r.index(index).id("75e18fb1-7efb-4ff7-b9eb-18de4eefea02"), RequestLog.class);
        logger.info("response {}",response);
        if(response.found()){
            RequestLog source = response.source();
            logger.info("response source {}",source);
        }else{
            logger.info("not get source");
        }
    }


    private RequestLog createRandomLog() {
        Random random = new Random();
        String[] appKey= {"a1111","b2222","c3333","c4444"};
        String[] name = {"中国公司","美国公司","法国公司","印度公司"};
        String[] msg = {"success","error","warn"};
        RequestLog log = new RequestLog();
        log.setAppKey(appKey[random.nextInt(appKey.length)]);
        log.setId(UUID.randomUUID().toString());
        log.setName(name[random.nextInt(name.length)]);
        log.setTtl(random.nextInt(1000));
        log.setResponse(msg[random.nextInt(msg.length)]);
        log.setCreateDate(new Date());
        return log;
    }
    @Test
    public void testSearchDocument() throws IOException {
//        SearchRequest fuzzQuery= new SearchRequest.Builder().index(index).query(b -> b.fuzzy(t -> t.field("name").value("dd"))).build() ;
        SearchRequest matchQuery = new SearchRequest.Builder().index(index).
                from(3).size(2000).query(b -> b.match(t -> t.field("name").fuzziness("1").query("公司"))).build() ;

        SearchResponse<RequestLog> response = esClient.search(matchQuery, RequestLog.class);

        for (Hit<RequestLog> hit : response.hits().hits()) {
            RequestLog source = hit.source();
            System.out.println(source);
        }
    }
}

应该都是可以执行的,问题不大

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1663607.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【通义千问系列】Qwen-Agent 从入门到精通【持续更新中……】

目录 前言一、快速开始1-1、介绍1-2、安装1-3、开发你自己的Agent 二、Qwen-Agent的使用和开发过程2-1、Agent2-1-1、Agent使用2-1-2、Agent开发 2-2、Tool2-2-1、工具使用2-2-2、工具开发 2-3、LLM2-3-1、LLM使用2-3-2、LLM开发 三、基于Qwen-Agent的案例分析3-1、3-2、 总结 …

Linux/Brainfuck

Brainfuck Enumeration Nmap 扫描发现对外开放了 22&#xff0c;25&#xff0c;110&#xff0c;143&#xff0c;443 五个端口&#xff0c;使用 nmap 扫描端口详细信息 ┌──(kali㉿kali)-[~/vegetable/HTB/Insane] └─$ nmap -sC -sV -p 22,25,110,143,443 -oA nmap 10.10…

【Unity Animation 2D】Unity Animation 2D骨骼绑定与动画制作

一、图片格式为png格式&#xff0c;并且角色各部分分离 图片参数设置 需要将Sprite Mode设置为Single&#xff0c;否则图片不能作为一个整体 1、创建骨骼 1.1 旋转Create Bone&#xff0c;点击鼠标左键确定骨骼位置&#xff0c;移动鼠标再次点击鼠标左键确定骨骼&#xff0c…

DSSAT作物模建模方法

原文链接&#xff1a;DSSAT作物模建模方法https://mp.weixin.qq.com/s?__bizMzUzNTczMDMxMg&mid2247604079&idx5&sn0151d083d35c9ea259cf155d082b0145&chksmfa821688cdf59f9eddae14a99fce4f56c6ad9d73db38e0b9b165dcb9b315b6ed845d83cd085f&token94156244…

OV SSL证书的多重优势:提升用户信任与安全

在数字化时代&#xff0c;网络安全成为了企业与用户共同关注的焦点。SSL证书作为保护数据传输安全的重要工具&#xff0c;其种类繁多&#xff0c;其中组织验证&#xff08;Organization Validation&#xff0c;简称OV&#xff09;SSL证书凭借其独特的优点&#xff0c;在众多安全…

【SpringBoot】使用阿里云实现短信验证

前言 之前在写Redis相关内容的时候&#xff0c;提到了Redis可以和我们的短信验证结合起来使用&#xff0c;于是这几天博主空了&#xff0c;想起来这个事&#xff0c;连忙学习了阿里云关于短信验证的内容&#xff0c;使用SpringBoot框架进行代码书写&#xff0c;并将Redis结合起…

SGP.02-v4.2-002

ETSI TS 102 226 [5] ts_102.226v13.0.0 Remote APDU structure for UICC based applications 在ETSI TS 102 223 [3]标准中&#xff0c;关于通过PUSH命令打开BIP&#xff08;基于IP的&#xff09;通道的数据字段可以包含任何为OPEN CHANNEL定义的COMPREHENSION-TLV&#xf…

MP4提取gif怎么操作?分享一招快制作

随着各种社交媒体的发展&#xff0c;越来越多的人在聊天中使用gif表情包来调节自己的聊天氛围。搞笑的gif表情包能够为我们平淡的生活添砖加瓦&#xff0c;带给我们一些轻松和欢乐。如果想要自己制作gif动画的时候就可以用视频转gif的工具&#xff0c;能够在不下载软件的情况下…

【Ubuntu永久授权串口设备读取权限‘/dev/ttyUSB0‘】

Ubuntu永久授权串口设备读取权限 1 问题描述2 解决方案2.1 查看ttyUSB0权限&#xff0c;拥有者是root&#xff0c;所属用户组为dialout2.2 查看dialout用户组成员&#xff0c;如图所示&#xff0c;普通用户y不在dialout组中2.3 将普通用户y加入dialout组中2.4 再次查看dialout用…

端到端将重塑智驾?获10亿美金融资,解密英国AI独角兽Wayve

‍作者 |张马也 编辑 |德新 就在前两天&#xff0c;英国AI公司Wayve宣布获得新一轮10.5亿美元融资&#xff0c;投资方为软银、英伟达和现有投资人微软&#xff0c;可以说是顶级豪华阵容。 作为一家英国公司&#xff0c;Wayve这轮融资也创造了英国AI公司有史以来最大的单笔融资…

保姆级教学 基于Hexo搭建个人网站(Github)

文章目录 搭建Hexo静态博客介绍一、注册Github账号二、 安装前置软件包三、 绑定github仓库创建SSH私钥添加私钥连接Github仓库 四、安装hexo1. 更改npm镜像源2. 创建一个文件夹 在里面打开终端3. 初始化hexo 五、切换主题1. 安装主题2. 修改默认主题查看修改主题后的网站 六、…

【密评】 | 商用密码应用安全性评估从业人员考核题库(8/58)

国家支持社会团体、企业利用自主创新技术制定&#xff08;&#xff09;国家标准、行业标准相关技术要求的商用密码团体标准、企业标准。 A.低于 B.等于 C.高于 D.相当于 在密码的实际应用中&#xff0c;通常使用下列哪种方法来实现不可否认性&#xff08;&#xff09;。 A.加密…

无人机+集群控制:穿越机集群技术详解

来源&#xff1a;无人机技术圈 作者&#xff1a;无人机 “人工智能技术与咨询” 发布 无人机集群是指为共同执行某一任务、受统一指挥的多架无人机组成的集合体。无人机集群可以通过网络技术实现互联互通&#xff0c;形成集中统一的整体&#xff0c;从而实现协同作战或完成…

测斜仪的具体应用:从地下工程到斜坡监测

测斜仪作为一种精密的测量工具&#xff0c;在多个领域都有广泛的应用。从最初的地下工程&#xff0c;到现今的斜坡监测&#xff0c;测斜仪的技术进步和应用范围的扩大&#xff0c;为工程安全提供了有力的保障。 一、地下工程中的测斜仪应用 在地下工程中&#xff0c;测斜仪主要…

python输入多行统计行数

input输入多行 统计行数编写一段代码来统计输入文本的行数。以下是一个简单的Python示例代码&#xff1a; # 从用户输入中读取多行文本 lines [] print("请输入文本&#xff0c;输入# ꧂ ꧁结束输入:") while True:line input()if line end:breaklines.append(li…

【R语言与统计】SEM结构方程、生物群落、多元统计分析、回归及混合效应模型、贝叶斯、极值统计学、meta分析、copula、分位数回归、文献计量学

统计模型的七大类&#xff1a;一&#xff1a;多元回归 在研究变量之间的相互影响关系模型时候&#xff0c;用到这类方法&#xff0c;具体地说&#xff1a;其可以定量地描述某一现象和某些因素之间的函数关系&#xff0c;将各变量的已知值带入回归方程可以求出因变量的估计值&…

【御控物联】Java JSON结构转换、JSON协议转换、JSON属性互换(15):对象To数组——转换映射方式

文章目录 一、JSON结构转换是什么&#xff1f;二、术语解释三、案例之《JSON对象 To JSON数组》四、代码实现五、在线转换工具六、技术资料 一、JSON结构转换是什么&#xff1f; JSON结构转换指的是将一个JSON对象或JSON数组按照一定规则进行重组、筛选、映射或转换&#xff0…

璞华科技中标苏州工业园区“科技发展公司运营管理系统”升级改造项目

近日&#xff0c;璞华科技中标苏州工业园区科技发展有限公司“科技发展公司运营管理系统”升级改造项目。 苏州工业园区科技发展有限公司成立于2000年&#xff0c;是苏州工业园区管委会直属国有企业&#xff0c;聚焦以人工智能为引领的数字经济产业创新集群&#xff0c;重点布局…

亚马逊广告怎么优化?11条口诀请谨记

对于亚马逊卖家来说&#xff0c;想要销量好&#xff0c;亚马逊广告是不可或缺的&#xff01;那么卖家要如何优化亚马逊广告才可以获得更好的效果呢&#xff1f;今天给大家分享11条亚马逊广告优化口诀&#xff0c;赶紧收藏学起来吧&#xff01; 亚马逊广告优化口诀分享 1、曝光高…

Python-VBA函数之旅-sorted函数

目录 一、sorted函数的常见应用场景 二、sorted函数使用注意事项 三、如何用好sorted函数&#xff1f; 1、sorted函数&#xff1a; 1-1、Python&#xff1a; 1-2、VBA&#xff1a; 2、推荐阅读&#xff1a; 个人主页&#xff1a; https://blog.csdn.net/ygb_1024?spm1…