当前位置: 首页 > 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…...

生成xcframework

打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式&#xff0c;可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...

vscode里如何用git

打开vs终端执行如下&#xff1a; 1 初始化 Git 仓库&#xff08;如果尚未初始化&#xff09; git init 2 添加文件到 Git 仓库 git add . 3 使用 git commit 命令来提交你的更改。确保在提交时加上一个有用的消息。 git commit -m "备注信息" 4 …...

【OSG学习笔记】Day 18: 碰撞检测与物理交互

物理引擎&#xff08;Physics Engine&#xff09; 物理引擎 是一种通过计算机模拟物理规律&#xff08;如力学、碰撞、重力、流体动力学等&#xff09;的软件工具或库。 它的核心目标是在虚拟环境中逼真地模拟物体的运动和交互&#xff0c;广泛应用于 游戏开发、动画制作、虚…...

YSYX学习记录(八)

C语言&#xff0c;练习0&#xff1a; 先创建一个文件夹&#xff0c;我用的是物理机&#xff1a; 安装build-essential 练习1&#xff1a; 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件&#xff0c;随机修改或删除一部分&#xff0c;之后…...

1688商品列表API与其他数据源的对接思路

将1688商品列表API与其他数据源对接时&#xff0c;需结合业务场景设计数据流转链路&#xff0c;重点关注数据格式兼容性、接口调用频率控制及数据一致性维护。以下是具体对接思路及关键技术点&#xff1a; 一、核心对接场景与目标 商品数据同步 场景&#xff1a;将1688商品信息…...

汽车生产虚拟实训中的技能提升与生产优化​

在制造业蓬勃发展的大背景下&#xff0c;虚拟教学实训宛如一颗璀璨的新星&#xff0c;正发挥着不可或缺且日益凸显的关键作用&#xff0c;源源不断地为企业的稳健前行与创新发展注入磅礴强大的动力。就以汽车制造企业这一极具代表性的行业主体为例&#xff0c;汽车生产线上各类…...

蓝牙 BLE 扫描面试题大全(2):进阶面试题与实战演练

前文覆盖了 BLE 扫描的基础概念与经典问题蓝牙 BLE 扫描面试题大全(1)&#xff1a;从基础到实战的深度解析-CSDN博客&#xff0c;但实际面试中&#xff0c;企业更关注候选人对复杂场景的应对能力&#xff08;如多设备并发扫描、低功耗与高发现率的平衡&#xff09;和前沿技术的…...

【论文笔记】若干矿井粉尘检测算法概述

总的来说&#xff0c;传统机器学习、传统机器学习与深度学习的结合、LSTM等算法所需要的数据集来源于矿井传感器测量的粉尘浓度&#xff0c;通过建立回归模型来预测未来矿井的粉尘浓度。传统机器学习算法性能易受数据中极端值的影响。YOLO等计算机视觉算法所需要的数据集来源于…...

Axios请求超时重发机制

Axios 超时重新请求实现方案 在 Axios 中实现超时重新请求可以通过以下几种方式&#xff1a; 1. 使用拦截器实现自动重试 import axios from axios;// 创建axios实例 const instance axios.create();// 设置超时时间 instance.defaults.timeout 5000;// 最大重试次数 cons…...

MySQL 8.0 OCP 英文题库解析(十三)

Oracle 为庆祝 MySQL 30 周年&#xff0c;截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始&#xff0c;将英文题库免费公布出来&#xff0c;并进行解析&#xff0c;帮助大家在一个月之内轻松通过OCP认证。 本期公布试题111~120 试题1…...