当前位置: 首页 > news >正文

Elasticsearch—(MacOs)

1⃣️环境准备

  1. 准备 Java 环境:终端输入 java -version 命令来确认版本是否符合 Elasticsearch 要求
  2. 下载并解压 Elasticsearch:前往(https://www.elastic.co/downloads/elasticsearch)选择适合你的 Mac 系统的 Elasticsearch 版本进行下载
  3. 设置 Elasticsearch 配置:在 config 目录下找到并打开 elasticsearch.yml 配置文件。根据你的需求,修改其中的一些设置,比如监听的端口、集群名称等
  4. 启动 Elasticsearch:打开终端,进入 Elasticsearch 解压目录,执行以下命令启动 Elasticsearch:
    ./bin/elasticsearch
    
  5. 验证 Elasticsearch 是否正常运行:打开浏览器,访问 http://localhost:9200 地址,如果能看到返回的 JSON 格式的信息,说明 Elasticsearch 已经成功安装并运行。

🌟使用步骤

  1. 配置依赖:在项目的构建文件(例如Maven的pom.xml)中添加Elasticsearch相关的依赖。这通常包括Spring Data Elasticsearch和Elasticsearch的Java客户端依赖。
  2. 配置Elasticsearch连接信息:在Spring的配置文件中,配置Elasticsearch连接的一些必要信息,例如主机名、端口号等。这些信息将用于与Elasticsearch建立连接。
  3. 创建Elasticsearch实体类:在Java中创建实体类,可以使用注解标注字段与Elasticsearch中的文档属性的映射关系。这些实体类通常使用JPA或Spring Data Elasticsearch提供的注解来简化与Elasticsearch的数据交互。
  4. 编写Elasticsearch相关的数据访问接口:使用Spring Data Elasticsearch提供的Repository接口,定义与Elasticsearch进行数据交互的查询方法。可以通过方法命名规则或自定义查询语句实现各种查询操作。
  5. 注入Elasticsearch的Repository:在需要使用Elasticsearch的地方,通过依赖注入方式获取到Elasticsearch的Repository。可以在Service层或Controller层中使用该Repository来进行查询、保存、更新等操作。
  6. 执行Elasticsearch操作:通过调用Elasticsearch的Repository方法,执行对Elasticsearch的数据操作。可以执行各种查询,例如基于关键字的全文搜索、聚合操作等。

2⃣️使用

要使用Elasticsearch进行增删改查等操作,你可以通过Postman来实现。下面我将提供一个使用RESTful API来演示的示例:

💫创建索引库

💫添加文档(添加行)

💫查询索引库

💫修改索引库

💫删除索引库

 3⃣️与Java使用

如何使用Java与Elasticsearch进行索引的创建、文档的增加、查询、修改和删除操作:

💠添加Elasticsearch Maven依赖:

pom.xml文件中添加以下依赖项:

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

💠创建索引库:

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.RestClient;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.xcontent.XContentBuilder;
import org.elasticsearch.common.xcontent.XContentType;
import org.elasticsearch.common.xcontent.json.JsonXContent;// 创建RestHighLevelClient客户端
RestHighLevelClient client = new RestHighLevelClient(RestClient.builder("localhost:9200"));// 创建索引请求
CreateIndexRequest request = new CreateIndexRequest("my_index");
request.settings(Settings.builder().put("index.number_of_shards", 1).put("index.number_of_replicas", 0));// 创建映射
XContentBuilder mapping = JsonXContent.contentBuilder().startObject().startObject("properties").startObject("user").field("type", "keyword").endObject().startObject("postDate").field("type", "date").endObject().startObject("message").field("type", "text").endObject().endObject().endObject();
request.mapping(mapping);// 执行创建索引请求
CreateIndexResponse response = client.indices().create(request, RequestOptions.DEFAULT);
if (response.isAcknowledged()) {System.out.println("索引创建成功");
} else {System.out.println("索引创建失败");
}// 关闭客户端
client.close();

💠添加文档:

import org.elasticsearch.action.index.IndexRequest;
import org.elasticsearch.action.index.IndexResponse;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.common.xcontent.XContentType;
import org.elasticsearch.client.RestClient;// 创建RestHighLevelClient客户端
RestHighLevelClient client = new RestHighLevelClient(RestClient.builder("localhost:9200"));// 构建索引请求
IndexRequest request = new IndexRequest("my_index");
request.id("1");
String jsonString = "{" +"\"user\":\"John\"," +"\"postDate\":\"2023-09-25\"," +"\"message\":\"This is a sample document\"" +"}";
request.source(jsonString, XContentType.JSON);// 执行索引请求
IndexResponse response = client.index(request, RequestOptions.DEFAULT);// 获取响应结果
String index = response.getIndex();
String id = response.getId();
if (response.getResult() == DocWriteResponse.Result.CREATED) {System.out.println("文档创建成功,索引:" + index + ",id:" + id);
} else if (response.getResult() == DocWriteResponse.Result.UPDATED) {System.out.println("文档更新成功,索引:" + index + ",id:" + id);
}// 关闭客户端
client.close();

💠查询索引库

import org.elasticsearch.action.search.SearchRequest;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.search.SearchHit;
import org.elasticsearch.search.SearchHits;
import org.elasticsearch.search.builder.SearchSourceBuilder;
import org.elasticsearch.client.RestClient;// 创建RestHighLevelClient客户端
RestHighLevelClient client = new RestHighLevelClient(RestClient.builder("localhost:9200"));// 构建搜索请求
SearchRequest request = new SearchRequest("my_index");
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
searchSourceBuilder.query(QueryBuilders.matchQuery("message", "sample"));
request.source(searchSourceBuilder);// 执行搜索请求
SearchResponse response = client.search(request, RequestOptions.DEFAULT);// 处理搜索结果
SearchHits hits = response.getHits();
for (SearchHit hit : hits.getHits()) {String sourceAsString = hit.getSourceAsString();System.out.println(sourceAsString);
}// 关闭客户端
client.close();

💠修改索引库:

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.common.xcontent.XContentFactory;
import org.elasticsearch.client.RestClient;// 创建RestHighLevelClient客户端
RestHighLevelClient client = new RestHighLevelClient(RestClient.builder("localhost:9200"));// 构建更新请求
UpdateRequest request = new UpdateRequest("my_index", "1").doc(XContentFactory.jsonBuilder().startObject().field("message", "Updated document").endObject());// 执行更新请求
UpdateResponse response = client.update(request, RequestOptions.DEFAULT);
String index = response.getIndex();
String id = response.getId();
if (response.getResult() == DocWriteResponse.Result.UPDATED) {System.out.println("文档更新成功,索引:" + index + ",id:" + id);
} else if (response.getResult() == DocWriteResponse.Result.NOOP) {System.out.println("文档未发生更新,索引:" + index + ",id:" + id);
}// 关闭客户端
client.close();

💠删除索引库:

import org.elasticsearch.action.delete.DeleteRequest;
import org.elasticsearch.action.delete.DeleteResponse;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.client.RestClient;// 创建RestHighLevelClient客户端
RestHighLevelClient client = new RestHighLevelClient(RestClient.builder("localhost:9200"));// 构建删除请求
DeleteRequest request = new DeleteRequest("my_index", "1");// 执行删除请求
DeleteResponse response = client.delete(request, RequestOptions.DEFAULT);
String index = response.getIndex();
String id = response.getId();
if (response.getResult() == DocWriteResponse.Result.DELETED) {System.out.println("文档删除成功,索引:" + index + ",id:" + id);
} else if (response.getResult() == DocWriteResponse.Result.NOT_FOUND) {System.out.println("文档未找到,索引:" + index + ",id:" + id);
}// 关闭客户端
client.close();

相关文章:

Elasticsearch—(MacOs)

1⃣️环境准备 准备 Java 环境&#xff1a;终端输入 java -version 命令来确认版本是否符合 Elasticsearch 要求下载并解压 Elasticsearch&#xff1a;前往&#xff08;https://www.elastic.co/downloads/elasticsearch&#xff09;选择适合你的 Mac 系统的 Elasticsearch 版本…...

插入排序与希尔排序

个人主页&#xff1a;Lei宝啊 愿所有美好如期而遇 前言&#xff1a; 这两个排序在思路上有些相似&#xff0c;所以有人觉得插入排序和希尔排序差别不大&#xff0c;事实上&#xff0c;他们之间的差别不小&#xff0c;插入排序只是希尔排序的最后一步。 目录 前言&#xff1a;…...

C# OpenCvSharp 基于直线检测的文本图像倾斜校正

效果 项目 代码 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using OpenCvSharp;namespace OpenCvSharp_基于直线检测的文…...

“智慧时代的引领者:探索人工智能的无限可能性“

目录 一.背景 二.应用 2.1金融领域 2.2医疗领域 2.3教育领域 三.发展 四.总结: 一.背景 人工智能&#xff08;Artificial Intelligence&#xff0c;简称AI&#xff09;&#xff0c;是指通过计算机程序模拟人类智能的一种技术。它是计算机科学、工程学、语言学、哲学等多…...

PMSM——转子位置估算基于QPLL

文章目录 前言仿真模型观测器速度观测位置观测转矩波形电流波形 前言 今后是电机控制方向的研究生的啦&#xff0c;期待有同行互相交流。 仿真模型 观测器 速度观测 位置观测 转矩波形 电流波形...

Android Studio之Gradle和Gradle插件的区别

解释的很详细 Android Studio之Gradle和Gradle插件的区别...

DataExcel控件读取和保存excel xlsx 格式文件

需要引用NPOI库 https://github.com/dotnetcore/NPOI 调用Read 函数将excel读取到dataexcel控件 调用Save 函数将dataexcel控件文件保存为excel文件 using NPOI.HSSF.UserModel; using NPOI.HSSF.Util; using NPOI.SS.UserModel; using NPOI.SS.Util; using System; using …...

【JavaEE】CAS(Compare And Swap)操作

文章目录 什么是 CASCAS 的应用如何使用 CAS 操作实现自旋锁CAS 的 ABA 问题CAS 相关面试题 什么是 CAS CAS&#xff08;Compare and Swap&#xff09;是一种原子操作&#xff0c;用于在无锁情况下保证数据一致性的问题。它包含三个操作数——内存位置、预期原值及更新值。在执…...

第三章:最新版零基础学习 PYTHON 教程(第三节 - Python 运算符—Python 中的关系运算符)

关系运算符用于比较值。它根据条件返回 True 或 False。这些运算符也称为比较运算符。 操作员描述 句法> 大于:如果左操作数大于右操作数,则为 Truex > y...

【GDB】使用 GDB 自动画红黑树

阅读本文前需要的基础知识 用 python 扩展 gdb python 绘制 graphviz 使用 GDB 画红黑树 前面几节中介绍了 gdb 的 python 扩展&#xff0c;参考 用 python 扩展 gdb 并且 python 有 graphviz 模块&#xff0c;那么可以用 gdb 调用 python&#xff0c;在 python 中使用 grap…...

使用Vue3+elementPlus的Tree组件实现一个拖拽文件夹管理

文章目录 1、前言2、分析3、实现4、踩坑4.1、拖拽辅助线的坑4.2、数据的坑4.3、限制拖拽4.4、样式调整 1、前言 最近在做一个文件夹管理的功能&#xff0c;要实现一个树状的文件夹面板。里面包含两种元素&#xff0c;文件夹以及文件。交互要求如下&#xff1a; 创建、删除&am…...

小谈设计模式(7)—装饰模式

小谈设计模式&#xff08;7&#xff09;—装饰模式 专栏介绍专栏地址专栏介绍 装饰模式装饰模式角色Component&#xff08;抽象组件&#xff09;ConcreteComponent&#xff08;具体组件&#xff09;Decorator&#xff08;抽象装饰器&#xff09;ConcreteDecorator&#xff08;具…...

nginx 多层代理 + k8s ingress 后端服务获取客户真实ip 配置

1.nginx http 七层代理 修改命令空间&#xff1a; namespace: nginx-ingress : configmap&#xff1a;nginx-configuration kubectl get cm nginx-configuration -n ingress-nginx -o yaml添加如上配置 compute-full-forwarded-for: “true” forwarded-for-header: X-Forwa…...

6种最常用的3D点云语义分割AI模型对比

由于增强现实/虚拟现实的发展及其在计算机视觉、自动驾驶和机器人领域的广泛应用&#xff0c;点云学习最近引起了人们的关注。 深度学习已成功用于解决 2D 视觉问题&#xff0c;然而&#xff0c;由于其处理面临独特的挑战&#xff0c;深度学习技术在点云上的使用仍处于起步阶段…...

UG NX二次开发(C#)-获取UI中选择对象的handle值

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 1、前言2、设计一个简单的UI界面3、创建工程项目4、测试结果1、前言 我在哔哩哔哩的视频中看到有人问我如何获取UI选择对象的Handle,本来想把Tag、Taggedobject、Handle三者的关系讲一下,然后看…...

win10,WSL的Ubuntu配python3.7手记

1.装linux 先在windows上安装WSL版本的Ubuntu Windows10系统安装Ubuntu子系统_哔哩哔哩_bilibili &#xff08;WSL2什么的一直没搞清楚&#xff09; 图形界面会出一些问题&#xff0c;注意勾选ccsm出的界面设置 win10安装Ubuntu16.04子系统&#xff0c;并开启桌面环境_win…...

02-Zookeeper实战

上一篇&#xff1a;01-Zookeeper特性与节点数据类型详解 1. zookeeper安装 Step1&#xff1a; 配置JAVA环境&#xff0c;检验环境&#xff1a; java -versionStep2: 下载解压 zookeeper wget https://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.5.8/apache-zookeepe…...

【C语言深入理解指针(1)】

1.内存和地址 1.1内存 在讲内存和地址之前&#xff0c;我们想有个⽣活中的案例&#xff1a; 假设有⼀栋宿舍楼&#xff0c;把你放在楼⾥&#xff0c;楼上有100个房间&#xff0c;但是房间没有编号&#xff0c;你的⼀个朋友来找你玩&#xff0c;如果想找到你&#xff0c;就得挨…...

模拟实现简单的通讯录

前言&#xff1a;生活中处处都会看到或是用到通讯录&#xff0c;今天我们就通过C语言来简单的模拟实现一下通讯录。 鸡汤&#xff1a;跨越山海&#xff0c;终见曙光&#xff01; 链接:gitee仓库&#xff1a;代码链接 目录 主函数声明部分初始化通讯录实现扩容的函数增加通讯录所…...

rabbitMQ死信队列快速编写记录

文章目录 1.介绍1.1 什么是死信队列1.2 死信队列有什么用 2. 如何编码2.1 架构分析2.2 maven坐标2.3 工具类编写2.4 consumer1编写2.5 consumer2编写2.6 producer编写 3.整合springboot3.1 架构图3.2 maven坐标3.3 构建配置类&#xff0c;创建exchange&#xff0c;queue&#x…...

开源入门踩坑全实录:从PR被拒到核心贡献者的全周期避坑指南

根据中国开源软件推进联盟2025年发布的《中国开源开发者生态报告》&#xff0c;国内开源开发者规模已突破1200万&#xff0c;但入门1年内就停止贡献的开发者占比高达78.6%。换句话说&#xff0c;每5个尝试入门开源的新手&#xff0c;就有4个会在一年内彻底放弃。 作为从0起步&a…...

OpenClaw+GLM-4.7-Flash:自动化代码审查工具

OpenClawGLM-4.7-Flash&#xff1a;自动化代码审查工具 1. 为什么需要自动化代码审查 作为一个长期与代码打交道的开发者&#xff0c;我深知代码审查的重要性。但现实情况是&#xff0c;团队中的代码审查往往成为瓶颈——要么因为人力不足导致积压&#xff0c;要么因为审查者…...

新手避坑指南:安捷伦/是德示波器探头选1MΩ还是50Ω?实测对比告诉你差别有多大

示波器探头阻抗选择实战手册&#xff1a;1MΩ与50Ω的黄金法则 第一次接触示波器时&#xff0c;我犯了个低级错误——用1MΩ探头直接测量射频电路&#xff0c;结果不仅波形畸变成锯齿状&#xff0c;还差点烧毁前端放大器。这个价值3000元的教训让我深刻认识到&#xff1a;探头…...

AudioSeal小白入门:无需代码,用90年代复古界面快速加密你的音频

AudioSeal小白入门&#xff1a;无需代码&#xff0c;用90年代复古界面快速加密你的音频 1. 什么是AudioSeal&#xff1f; AudioSeal是Meta公司开发的一款前沿音频水印技术&#xff0c;它能在不影响音质的前提下&#xff0c;将数字签名"隐形"嵌入到音频文件中。想象…...

从‘飞到红色建筑左边’说起:拆解无人机视觉语言导航(VLN)背后的三大工程难题

从"飞到红色建筑左边"说起&#xff1a;拆解无人机视觉语言导航的工程化困局 当你在测试场地对无人机说出"飞到红色建筑左边"时&#xff0c;这个看似简单的指令背后&#xff0c;是一场跨越模态鸿沟的复杂解码过程。不同于实验室里的完美演示&#xff0c;真实…...

达梦数据库-归档日志文件-记录总结

达梦数据库-归档日志文件-记录总结DM数据库可以运行在归档模式或非归档模式下。如果是归档模式&#xff0c;联机日志文件中的内容保存到硬盘中&#xff0c;形成归档日志文件&#xff1b;如果是非归档模式&#xff0c;则不会形成归档日志。归档日志文件以归档时间命名&#xff0…...

LiuJuan20260223Zimage与Typora协作:智能化Markdown文档创作

LiuJuan20260223Zimage与Typora协作&#xff1a;智能化Markdown文档创作 每次打开Typora&#xff0c;看着那个简洁到极致的界面&#xff0c;我都会有种创作的冲动。但冲动归冲动&#xff0c;真到了要写一篇技术博客、整理一份项目文档&#xff0c;或者梳理一堆零散笔记的时候&…...

彻底禁用fmt库文件系统依赖:从编译到代码的全链路方案

彻底禁用fmt库文件系统依赖&#xff1a;从编译到代码的全链路方案 【免费下载链接】fmt A modern formatting library 项目地址: https://gitcode.com/GitHub_Trending/fm/fmt 在C项目中&#xff0c;fmt库是一个现代格式化库&#xff0c;它提供了高效的类型安全格式化功…...

FPGA仿真提速秘籍:手把手教你配置VSCode,一键运行iverilog编译+GTKWave看波形

FPGA仿真效率革命&#xff1a;VSCodeiverilogGTKWave全自动化工作流实战 在数字电路设计领域&#xff0c;仿真验证环节往往占据整个开发周期60%以上的时间。传统基于命令行的仿真流程需要工程师反复输入冗长指令&#xff0c;手动切换多个工具界面&#xff0c;这种低效的工作模…...

OpenClaw技能开发入门:基于nanobot定制个人自动化模块

OpenClaw技能开发入门&#xff1a;基于nanobot定制个人自动化模块 1. 为什么需要自定义OpenClaw技能&#xff1f; 去年夏天&#xff0c;当我第一次接触OpenClaw时&#xff0c;最让我惊喜的不是它预置的几十种技能&#xff0c;而是它允许开发者像搭积木一样自由扩展功能。作为…...