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

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

相关文章:

  • 10 个免费好用的图像压缩软件
  • 【PyTorch】PyTorch之Reduction Ops
  • 【NVIDIA】Jetson Orin Nano系列:安装 Qt6、firefox、jtop、flameshot
  • git 删除 submodule 子模块的步骤
  • Python——字符串的基本操作
  • 常用的目标跟踪有哪些
  • 【C语言】linux内核ipoib模块 - ipoib_start_xmit
  • phpStorm 设置终端为git bash
  • 力扣白嫖日记(sql)
  • 【Linux】基本指令
  • 解决el-radio-group只触发一次的问题
  • 【信号与系统】(1)连续和离散表示
  • 算法训练营Day37(贪心6)
  • css3+javaScript实现一个左右钟摆-摇晃的红灯笼网页特效
  • RabbitMQ入门篇【图文并茂,超级详细】
  • Android单元测试 - 几个重要问题
  • Apache的80端口被占用以及访问时报错403
  • CODING 缺陷管理功能正式开始公测
  • fetch 从初识到应用
  • Flex布局到底解决了什么问题
  • Git同步原始仓库到Fork仓库中
  • HTML中设置input等文本框为不可操作
  • Java多线程(4):使用线程池执行定时任务
  • JS创建对象模式及其对象原型链探究(一):Object模式
  • LeetCode541. Reverse String II -- 按步长反转字符串
  • Linux快速配置 VIM 实现语法高亮 补全 缩进等功能
  • nfs客户端进程变D,延伸linux的lock
  • Redis 懒删除(lazy free)简史
  • Zsh 开发指南(第十四篇 文件读写)
  • 阿里云Kubernetes容器服务上体验Knative
  • 包装类对象
  • 如何邀请好友注册您的网站(模拟百度网盘)
  • 体验javascript之美-第五课 匿名函数自执行和闭包是一回事儿吗?
  • 优秀架构师必须掌握的架构思维
  • 【云吞铺子】性能抖动剖析(二)
  • Linux权限管理(week1_day5)--技术流ken
  • 智能情侣枕Pillow Talk,倾听彼此的心跳
  • ​​​​​​​GitLab 之 GitLab-Runner 安装,配置与问题汇总
  • ​你们这样子,耽误我的工作进度怎么办?
  • ​学习一下,什么是预包装食品?​
  • (3)选择元素——(14)接触DOM元素(Accessing DOM elements)
  • (day6) 319. 灯泡开关
  • (HAL库版)freeRTOS移植STMF103
  • (附源码)ssm高校社团管理系统 毕业设计 234162
  • (排序详解之 堆排序)
  • (强烈推荐)移动端音视频从零到上手(上)
  • (五) 一起学 Unix 环境高级编程 (APUE) 之 进程环境
  • (转)shell调试方法
  • ./configure、make、make install 命令
  • .describe() python_Python-Win32com-Excel
  • .form文件_一篇文章学会文件上传
  • .net core webapi 大文件上传到wwwroot文件夹
  • .Net 访问电子邮箱-LumiSoft.Net,好用
  • .net 怎么循环得到数组里的值_关于js数组
  • .net6+aspose.words导出word并转pdf