java 操作es 的基本操作

  • 创建索引
  • 创建索引别名
  • 索引的相关设置
  • 查询索引数据
  • bulk 导入数据
  • 持续更新中~

pom的坐标

        <!--es相关--><dependency><groupId>org.elasticsearch.client</groupId><artifactId>elasticsearch-rest-high-level-client</artifactId><version>7.10.2</version> <!-- 请根据需要选择合适的版本 --></dependency>
package es;import com.alibaba.fastjson.JSONObject;
import org.apache.http.HttpHost;
import org.elasticsearch.action.admin.indices.alias.IndicesAliasesRequest;
import org.elasticsearch.action.admin.indices.create.CreateIndexRequest;
import org.elasticsearch.action.admin.indices.create.CreateIndexResponse;
import org.elasticsearch.action.bulk.BulkRequest;
import org.elasticsearch.action.bulk.BulkResponse;
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.client.RequestOptions;
import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.xcontent.XContentBuilder;
import org.elasticsearch.common.xcontent.XContentFactory;
import org.elasticsearch.common.xcontent.XContentType;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.search.SearchHit;
import org.elasticsearch.search.builder.SearchSourceBuilder;
import org.elasticsearch.search.fetch.subphase.highlight.HighlightBuilder;
import org.elasticsearch.search.fetch.subphase.highlight.HighlightField;
import org.elasticsearch.search.sort.SortOrder;import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;public class EsConnectionExample {public static void main(String[] args) throws IOException {// 创建客户端// 连接es的地址RestHighLevelClient client = new RestHighLevelClient(RestClient.builder(new HttpHost("ip", 9200, "http"))); // 修改为你的ES地址和端口//创建索引CreateIndexRequest createIndexRequest = new CreateIndexRequest("my_index"); // 创建名为"my_index"的索引createIndexRequest.settings(Settings.builder().put("index.number_of_shards", 3) // 设置分片数.put("index.number_of_replicas", 2) // 设置副本数);CreateIndexResponse createIndexResponse = client.indices().create(createIndexRequest, RequestOptions.DEFAULT);System.out.println("索引创建成功:" + createIndexResponse.isAcknowledged());//给索引插入数据Map<String, Object> data = new HashMap<>();data.put("name", "huangi"); // 设置文档标题data.put("age", "18"); // 设置文档内容IndexRequest indexRequest = new IndexRequest("my_index"); // 将数据插入到"my_index"索引中indexRequest.id("1"); // 设置文档ID为1indexRequest.source(data, XContentType.JSON); // 将数据转换为JSON格式并设置到索引请求中IndexResponse indexResponse = client.index(indexRequest, RequestOptions.DEFAULT);System.out.println("数据插入成功:" + indexResponse.getResult().name().toLowerCase());//---------------------------------------------------------------------                             //查询一个名叫my_index的索引下列是age,值为25的数据,不是格式化展示                                                            // 构建查询请求                                                                                          // 创建搜索索引请求SearchRequest searchRequest = new SearchRequest("my_index"); // "posts" 是 index 的名字SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();searchSourceBuilder.query(QueryBuilders.matchAllQuery()); // 查询所有文档//searchSourceBuilder.sort("created_at", SortOrder.DESC); // 按 created_at 字段降序排序searchSourceBuilder.highlighter(new HighlightBuilder().field("content").preTags("<em>").postTags("</em>")); // 对 content 字段进行高亮显示searchRequest.source(searchSourceBuilder);// 执行搜索并获取响应SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);System.out.println("Total hits: " + searchResponse.getHits().getTotalHits().value);Map<String, HighlightField> highlightFields = searchResponse.getHits().getHits()[0].getHighlightFields();for (HighlightField highlightField : highlightFields.values()) {System.out.println("输出:"+highlightField.fragments()[0].string()); // 输出高亮显示的内容片段}//---------------------------------------------------------------------//查询一个名叫my_index的索引下列是age,值为25的数据,并格式化展示// 构建查询请求SearchRequest searchRequest1 = new SearchRequest("my_index"); // 将"your_index"替换为您要查询的索引名称SearchSourceBuilder searchSourceBuilder1 = new SearchSourceBuilder();searchSourceBuilder1.query(QueryBuilders.matchQuery("age", "25")); // 将"field_name"替换为您要查询的字段名称,将"query_value"替换为您要匹配的查询值searchRequest1.source(searchSourceBuilder1);// 执行查询请求并获取响应SearchResponse searchResponse1 = client.search(searchRequest1, RequestOptions.DEFAULT);// 处理响应数据(例如打印结果)System.out.println("Total hits: " + searchResponse1.getHits().getTotalHits().value);System.out.println("Hits: " + JSONObject.toJSONString(searchResponse1.getHits().getHits()));// 处理响应数据(例如打印结果)for (SearchHit hit : searchResponse1.getHits()) {HighlightField highlightField = hit.getHighlightFields().get("field_name"); // 将"field_name"替换为您要高亮的字段名称String highlightedValue = highlightField != null ? highlightField.getFragments()[0].string() : hit.getSourceAsString(); // 如果存在高亮结果,则获取第一个片段的值,否则获取原始字段的值System.out.println(highlightedValue); // 打印字段的值}//---------------------------------------------------------------------//创建索引别名// 索引名称和别名String indexName = "my_index";String aliasName = "my_index_alias";// 创建一个别名请求IndicesAliasesRequest request = new IndicesAliasesRequest();IndicesAliasesRequest.AliasActions aliasAction = new IndicesAliasesRequest.AliasActions(IndicesAliasesRequest.AliasActions.Type.ADD).index(indexName).alias(aliasName);request.addAliasAction(aliasAction);// 执行请求AcknowledgedResponse indicesAliasesResponse = client.indices().updateAliases(request, RequestOptions.DEFAULT);// 检查操作是否成功boolean acknowledged = indicesAliasesResponse.isAcknowledged();if (acknowledged) {System.out.println("Alias was successfully added to the index.");} else {System.out.println("Alias addition was not acknowledged.");}//---------------------------------------------------------------------//bulk 导入try (BufferedReader reader = new BufferedReader(new FileReader("user.json"))) {String line;// 构造 BulkRequest 对象并添加要导入的文档BulkRequest request1 = new BulkRequest();while ((line = reader.readLine()) != null) {XContentBuilder builder = XContentFactory.jsonBuilder().startObject().field("name", line).field("age", line).field("sex" , line).field("telephone", line).endObject();IndexRequest indexRequest1 = new IndexRequest("my_index").source(builder);request1.add(indexRequest1);}// 发送 BulkRequest 请求BulkResponse response = client.bulk(request1, RequestOptions.DEFAULT);if (response.hasFailures()) {System.out.println("Failed to import documents.");} else {System.out.println("Documents imported successfully!");}} catch (IOException e) {e.printStackTrace();} finally {// 关闭 ElasticSearch 客户端连接client.close();}// 关闭客户端连接client.close();}
}

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

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

相关文章

微信小程序(七)navigator点击效果

注释很详细&#xff0c;直接上代码 上一篇 新增内容&#xff1a; 1.默认效果 2.无效果 3.激活效果 源码&#xff1a; index.wxml //如果 <navigator url"/pages/logs/logs">跳转到log页面&#xff08;默认&#xff09; </navigator><navigator url&q…

【LeetCode2744】最大字符串配对数目

1、题目描述 【题目链接】 标签&#xff1a;数组&#xff0c;哈希表&#xff0c;字符串&#xff0c;模拟  给你一个下标从 0 开始的数组 words &#xff0c;数组中包含 互不相同 的字符串。  如果字符串 words[i] 与字符串 words[j] 满足以下条件&#xff0c;我们称它们可以…

kafka hang 问题记录

参考文档 https://cloud.tencent.com/developer/article/1821477 9092端口 端口9092通常与Apache Kafka关联。 Kafka是一个开源的分布式事件流平台&#xff0c;用于构建实时的数据管道和流应用。 它能够处理任意大小的数据&#xff0c;以容错的方式处理数据流。 在默认配置…

C# HPSocket 服务器端的详细 Demo,数据收发打包方式,避免出现沾包的情况

HPSocket 是一款跨平台的 Socket 服务器框架&#xff0c;支持快速开发高性能、高可靠性的网络通信应用程序。它提供了丰富的 API&#xff0c;可以轻松实现客户端与服务器之间的数据收发、连接管理等功能。 代码结构&#xff1a; 1、Program.cs&#xff1a;程序入口&#xff0c…

从零开始,自己搭建一个autonomous mobile robot做gazebo仿真(1):mobile robot建模与添加差速控制器

这样一个简单的mobile robot模型 首先写xacro文件&#xff0c;创建 link joint transmission <?xml version"1.0"?> <robot xmlns:xacro"http://www.ros.org/wiki/xacro" name"whill_modelc" ><xacro:property name"PI&q…

【点云、图像】学习中 常见的数学知识及其中的关系与python实操[更新中]

文章目录 前言一、平均值、方差、协方差平均值&#xff08;mean&#xff09;np.mean()方差&#xff08;variance&#xff09;np.var()总体方差 np.var(a, ddof0)无偏样本方差np.var(a, ddof1)有偏样本方差标准差&#xff08;standard deviation&#xff09;np.std(a, ddof1)默认…

Docker 部署考核

Docker安装 安装必要的系统工具 yum install -y yum-utils device-mapper-persistent-data lvm2 添加docker-ce安装源&#xff1a; yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo 配置阿里云Docker Yum源: yum-config-manager --ad…

docker 挂载的文件同步问题 及 telnet redis账号可用

在一台新的服务器上部署docker发现redis服务因白名单没配不通&#xff0c;可以通过telnet来进行测试&#xff0c;包括账号是否可用&#xff1a; 1 telnet 192.168.1.11 6379 # ip port 2 ctrl ] 3 回车 4 键入 auth 111111 # 密码 5 成功 OK 失败 -WRONGPASS invalid us…

UE学习笔记--如何区分FString、FName、FText,以及使用场景

目录 前言FStringFNameFTextFString、FName 和 Text 之间的区别可变性内存开销用例表现本地化支持 结论参考链接 前言 最近在学习 UE&#xff0c;发现 UE 基本没有用到 std::string&#xff0c;基本使用的是FString、FName、FText。去网络上查了些资料并且学习了下&#xff0c…

Numpy中的矩阵运算

一、Matrix和Array Matrix名为矩阵&#xff0c;Array名为阵列&#xff0c;它们都可以作为矩阵运算的结构&#xff0c;功能上Matrix是Array的子集&#xff0c;Matrix运算符相较于Array简单。本文章主要讲解Numpy中的Matrix和Array关于矩阵运算的区别&#xff0c;代码部分已经给出…

Mysql数据库:快速入门

目录 一. 介绍 1. 数据库基础概念 2 MySQL简介 二. 安装与配置 1. 下载与安装 MySQL 2. 配置 MySQL 三. 基本操作 1. 数据库的创建与删除 3 数据操作语言&#xff08;DML&#xff09; 4 数据查询语言&#xff08;DQL&#xff09; 5 数据控制语言&#xff08;DCL&…

年终总结:我的2023编程之旅

1. 成果回顾 在这一年中&#xff0c;我成功地完成了多个项目&#xff0c;其中最重要的是我们团队开发的“智能数据分析平台”。我负责了后端开发的核心部分&#xff0c;该平台目前每天处理超过100万条数据&#xff0c;为我们的客户提供了宝贵的信息和建议。同时&#xff0c;我…

2024.1.19 网络编程 作业

思维导图 练习题 1> UDP传输实现聊天室 服务器端 #include <myhead.h> #define SER_IP "192.168.125.151" #define SER_PORT 9999 typedef struct Msg {char user[32]; //用户名int type; //执行操作1.登录、2.发消息、0.退出char text[1024]; …

【Flink-CDC】Flink CDC 介绍和原理概述

【Flink-CDC】Flink CDC 介绍和原理概述 1&#xff09;基于查询的 CDC 和基于日志的 CDC2&#xff09;Flink CDC3&#xff09;Flink CDC原理简述4&#xff09;基于 Flink SQL CDC 的数据同步方案实践4.1.案例 1 : Flink SQL CDC JDBC Connector4.2.案例 2 : CDC Streaming ETL…

在 Python 中检查一个数字是否是同构数

更多资料获取 &#x1f4da; 个人网站&#xff1a;ipengtao.com 同构数&#xff0c;又称为自守数或自同构数&#xff0c;是一类特殊的数字&#xff0c;它们具有一种有趣的性质&#xff1a;将其平方后的数字&#xff0c;可以通过某种方式重新排列得到原来的数字。本文将详细介绍…

Java读取制表符文本转换为JSON

在Java开发中&#xff0c;处理各种数据格式是常见的任务。本文将介绍如何使用Java读取制表符文本文件&#xff0c;并将其转换为JSON格式&#xff0c;以便于后续的数据处理和分析。我们将使用Java中的相关库来实现这个过程&#xff0c;并提供详细的代码示例。 引言&#xff1a;…

4654. 消除游戏

4654. 消除游戏 - AcWing题库 #include <iostream> #include <vector> #include <cstring> using namespace std;const int N 1e6 10; char s[N]; int l[N], r[N]; vector<int> v, p; bool st[N]; void ins(int i) {if (st[i]) return;st[i] true;…

2024Java高频面试题之MQ消息中间件,面试都问些什么?(附详细答案)

最近很多同学问我有没有java学习资料&#xff0c;我根据我从小白到架构师多年的学习经验整理出来了一份50W字面试解析文档、简历模板、学习路线图、java必看学习书籍 、 需要的小伙伴 可以关注我公众号&#xff1a;“ Tom聊架构 ”&#xff0c; 回复暗号&#xff1a;“ 578”即…

Dockerfile镜像构建

Dockerfile镜像构建 1、部署harbor仓库 #部署docker #解压harbor安装包 rootharbor:~# cd /app/harbor/ rootharbor:/app/harbor# ll total 597560 drwxr-xr-x 3 root root 180 Jan 13 13:17 ./ drwxr-xr-x 4 root root 77 Jan 13 13:14 ../ drwxr-xr-x 3 root …

element-ui 打包流程源码解析(下)

目录 目录结构和使用1&#xff0c;npm 安装1.1&#xff0c;完整引入1.2&#xff0c;按需引入 2&#xff0c;CDN3&#xff0c;国际化 接上文&#xff1a;element-ui 打包流程源码解析&#xff08;上&#xff09; 文章中提到的【上文】都指它 ↑ 目录结构和使用 我们从使用方式来…