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 已经成功安装并运行。

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();

 

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

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

相关文章

开学选什么样的电容笔好用?ipad可以用的手写笔

自从ipad等平板电脑开始使用电容笔以来&#xff0c;电容笔已经完全代替了我们的手指&#xff0c;并且使我们的书写速度有了很大的提高。但由于Apple Pencil内置的高科技芯片&#xff0c;价格始终居高不下&#xff0c;这让不少人&#xff0c;尤其是在校学生&#xff0c;也是难以…

【C++】C++ 类中的 this 指针用法 ③ ( 全局函数 与 成员函数 相互转化 | 有参构造函数设置默认参数值 | 返回匿名对象与返回引用 )

文章目录 一、全局函数 与 成员函数 相互转化1、成员函数转为全局函数 - 多了一个参数2、全局函数转为成员函数 - 通过 this 指针隐藏操作数 二、有参构造函数设置默认参数值三、返回匿名对象与返回引用四、完整代码示例 一、全局函数 与 成员函数 相互转化 1、成员函数转为全局…

【PyTorch攻略(1/7)】 张量基本语法

一、说明 Tensor 是一种特殊的数据结构&#xff0c;与数组和矩阵非常相似。在 PyTorch 中&#xff0c;我们使用张量对模型的输入和输出以及模型的参数进行编码。 张量类似于 NumPy 和 ndarray&#xff0c;除了张量可以在 GPU 或其他硬件加速器上运行。事实上&#xff0c;张量和…

STM32单片机入门学习(四)-蜂鸣器

蜂鸣器接线 低平蜂鸣器&#xff0c;低电平发声&#xff0c;高电平不发声&#xff0c; 三个排针&#xff0c;VCC接3.3v&#xff0c;GND接地&#xff0c;I/O接A0口&#xff0c;如图&#xff1a; 蜂鸣器代码&#xff1a;响一秒停半秒 #include "stm32f10x.h" #includ…

Elasticsearch 部署学习

文章目录 Elasticsearch 部署学习1. 单节点部署 elasticsearch1.1 部署 jdk1.2 下载 elasticsearch1.3 上传文件并修改配置文件1.4 启动1.5 问题总结1.6 浏览器验证 2. 集群部署 elasticsearch3. 常用命令4. Elasticsearch kibana安装:one: 参考部署文档:two: 下载对应版本的安…

AI 编码助手 Codewhisperer 安装步骤和使用初体验

文章作者&#xff1a;为了自己加油 最近亚⻢逊云科技推出了一款基于机器学习的AI编程助手 Amazon Code Whisperer&#xff0c;可以实时提供代码建议。在编写代码时&#xff0c;它会自动根据现有的代码和注释给出建议。Amazon Code Whisperer与 GitHub Copilot 类似&#xff0c;…

MT1184矩形相交 题解【超详细】

目录 题目 样例 题目解析 代码 图解 矩形相交 题目 输入2个矩形的左上角和右下角两个点的坐标值(x&#xff0c;y)&#xff0c;判断2个矩形是否相交&#xff0c;输出YES或者NO。矩形的边应与x&#xff0c;y轴相平行。假定输入坐标能顺利构成矩形&#xff0c;不考虑无效矩形…

Centos7安装go解释器

Centos7安装go解释器 下载解压go压缩包编辑go变量结果验证 下载解压go压缩包 # 下载 wget -c https://go.dev/dl/go1.20.2.linux-amd64.tar.gz# 解压到指定目录 tar xvf go1.20.2.linux-amd64.tar.gz -C /usr/local/编辑go变量 /etc/profile.d/go.sh # 指定go执行程序位置 e…

【操作系统笔记九】并发安全问题

用户态抢占和内核态抢占 内核中可以执行以下几种程序&#xff1a; ① 当前运行的进程&#xff1a;陷阱程序&#xff08;系统调用&#xff09; 和 故障程序&#xff08;page fault&#xff09; &#xff0c;进程运行在内核态的时候&#xff0c;其实就是在执行进程在用户态触发的…

Spring面试题11:什么是Spring的依赖注入

该文章专注于面试,面试只要回答关键点即可,不需要对框架有非常深入的回答,如果你想应付面试,是足够了,抓住关键点 面试官:说一说Spring的依赖注入 依赖注入(Dependency Injection)是Spring框架的一个核心特性,它是指通过外部容器将对象的依赖关系注入到对象中,从而…

论文笔记:ST2Vec: Spatio-Temporal Trajectory SimilarityLearning in Road Networks

2022 KDD 1 intro 现有的轨迹相似性学习方案强调空间相似性而忽视了时空轨迹的时间维度&#xff0c;这使得它们在有时间感知的场景中效率低下 如上图&#xff0c;在拼车过程中&#xff0c;T1表示司机计划的行程&#xff0c;T2和T3是两个想要搭车的人。T1和T2在空间上更接近&am…

怒刷LeetCode的第15天(Java版)

目录 第一题 题目来源 题目内容 解决方法 方法一&#xff1a;哈希表双向链表 方法二&#xff1a;TreeMap 方法三&#xff1a;双哈希表 第二题 题目来源 题目内容 解决方法 方法一&#xff1a;二分查找 方法二&#xff1a;线性搜索 方法三&#xff1a;Arrays类的b…

【MySql】2- 基础篇(下)

文章目录 1. MySQL锁1. 1 全局锁1. 2 表级锁1. 3 行锁1. 3 .1 两阶段锁1. 3 .2 死锁和死锁检测 2. 事务是否是隔离的?2.1 快照在MVCC中如何工作 1. MySQL锁 数据库锁设计的初衷是处理并发问题。作为多用户共享的资源&#xff0c;当出现并发访问的时候&#xff0c;数据库需要合…

入门级制作电子期刊的网站推荐

随着数字化时代的到来&#xff0c;越来越多的人开始尝试制作自己的电子期刊。如果你也是其中的一员&#xff0c;那么这篇文章可以帮助你制作电子期刊。无论是初学者还是有一定经验的制作者&#xff0c;都能快速完成高质量的电子期刊制作 小编经常使用的工具是-----FLBOOK在线制…

[RF学习记录][ssh library][execute Command】关键字的返回值

有时候需要判断通过ssh在远程机器上执行的命令是否正常&#xff0c;使用关键字Execute Command可以在远程机器上运行命令&#xff0c;但是默认不加任何参数的话&#xff0c;没有看到范返回值&#xff0c;而这个关键字是带了几个参数的&#xff0c;简单的试验了下这几个参数&…

SAP Oracle表空间扩展技术手册

1、DBACOCKPIT下查看表空间 当表空间不足(达到99%)时,需要按以下步骤扩充表空间(每次扩充20000M,20G): (也可以通过DB13,DB02查看表空间) 新浪博客 Tablespace PSAPSR3 is 100% used | SAP Community Oracle是通过增加数据文件的方式来为表空间扩容。为指定表空间增…

Mock.js之Element-ui搭建首页导航与左侧菜单

&#x1f3ac; 艳艳耶✌️&#xff1a;个人主页 &#x1f525; 个人专栏 &#xff1a;《Spring与Mybatis集成整合》《springMvc使用》 ⛺️ 生活的理想&#xff0c;为了不断更新自己 ! 1、Mock.js的使用 1.1.什么是Mock.js Mock.js是一个模拟数据的生成器&#xff0c;用来帮助前…

【LeetCode热题100】--189.轮转数组

189.轮转数组 数组翻转&#xff1a; 当我们将数组的元素向右移动k次后&#xff0c;尾部k mod n个元素会移动至数组 头部&#xff0c;其余元素向后移动k mod n个位置 该方法为数组的翻转&#xff1a;我们可以先将所有元素翻转&#xff0c;这样尾部k mod n个元素就被移至数组头…

Jenkins Job的Migrate之旅

场景 使用Jenkins 做为应用的定时任务处理&#xff0c; 在上面建立的800个左右的Job, 这个环境运行了很多年&#xff0c; 当初安装的最新版本是Jenkins 1.642.3&#xff0c; 现在因为OS需要升级等原因&#xff0c; 驻在上面的Jenkins 服务器也需要一并升级&#xff0c;在新的服…

[LLM+AIGC] 01.应用篇之中文ChatGPT初探及利用ChatGPT润色论文对比浅析(文心一言 | 讯飞星火)

近年来&#xff0c;人工智能技术火热发展&#xff0c;尤其是OpenAI在2022年11月30日发布ChatGPT聊天机器人程序&#xff0c;其使用了Transformer神经网络架构&#xff08;GPT-3.5&#xff09;&#xff0c;能够基于在预训练阶段所见的模式、统计规律和知识来生成回答&#xff0c…