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

[elasticsearch 实现插入查询小demo ]

目录

前言:  

 。以下是Java语言实现Elasticsearch数据插入和批量插入的示例代码:

我们需要定义一个ElasticsearchUtil类来封装Elasticsearch操作。在本示例中,我们实现了以下方法:

下面是一个Java代码示例,演示了如何使用Elasticsearch实现数据插入和批量插入:

依赖:

elasticsearch 实现高亮查询操作:

我们需要定义一个ElasticsearchUtil类来封装Elasticsearch操作。在本示例中,我们实现了以下方法:

下面是一个Java代码示例,演示了如何使用Elasticsearch实现高亮查询:


前言:  

     Elasticsearch是一个分布式的全文搜索和分析引擎,支持实时数据插入和批量插入

 。以下是Java语言实现Elasticsearch数据插入和批量插入的示例代码:

  1. 首先,我们需要使用Java Elasticsearch客户端库来连接Elasticsearch集群。在本示例中,我们使用Elasticsearch Java High Level REST Client库来连接Elasticsearch集群。

  2. 我们需要定义一个ElasticsearchIndex类来管理Elasticsearch索引。在本示例中,我们使用一个名为"test_index"的索引来进行数据插入和批量插入操作。

public class ElasticsearchIndex {
    public static final String INDEX_NAME = "test_index";
}
 

我们需要定义一个ElasticsearchUtil类来封装Elasticsearch操作。在本示例中,我们实现了以下方法:

  • insert:使用Elasticsearch Java High Level REST Client库的Index API插入单条数据。
  • bulkInsert:使用Elasticsearch Java High Level REST Client库的Bulk API批量插入数据。
public class ElasticsearchUtil {private static final RestHighLevelClient client = new RestHighLevelClient(RestClient.builder(new HttpHost("localhost", 9200, "http")));public static void insert(String id, String json) throws IOException {IndexRequest request = new IndexRequest(ElasticsearchIndex.INDEX_NAME);request.id(id);request.source(json, XContentType.JSON);client.index(request, RequestOptions.DEFAULT);}public static void bulkInsert(List<String> jsonList) throws IOException {BulkRequest request = new BulkRequest();for (String json : jsonList) {IndexRequest indexRequest = new IndexRequest(ElasticsearchIndex.INDEX_NAME);indexRequest.source(json, XContentType.JSON);request.add(indexRequest);}client.bulk(request, RequestOptions.DEFAULT);}
}
  • 我们可以在Java应用程序中调用ElasticsearchUtil类中的方法来实现Elasticsearch数据插入和批量插入功能。例如,当需要插入单条数据时,我们可以调用insert方法,并传递数据的ID和JSON格式的数据。当需要批量插入数据时,我们可以调用bulkInsert方法,并传递一个包含多条JSON格式数据的列表。

下面是一个Java代码示例,演示了如何使用Elasticsearch实现数据插入和批量插入:

public class Main {public static void main(String[] args) throws IOException {// 插入单条数据String id = "1";String json = "{\"name\":\"John\", \"age\":30}";ElasticsearchUtil.insert(id, json);// 批量插入数据List<String> jsonList = new ArrayList<>();jsonList.add("{\"name\":\"John\", \"age\":30}");jsonList.add("{\"name\":\"Mary\", \"age\":25}");ElasticsearchUtil.bulkInsert(jsonList);}
}

依赖:

<dependency> 2 <groupId>org.elasticsearch.client</groupId> 3 <artifactId>elasticsearch-rest-high-level-client</artifactId> 4 <version>7.14.0</version> 5</dependency>

这个示例中,我们演示了如何使用Elasticsearch Java High Level REST Client库实现数据插入和批量插入。需要注意的是,使用Elasticsearch需要在Elasticsearch服务器端启用集群模式,并配置好集群节点。在Java客户端中,需要指定至少一个集群节点的IP地址和端口号,客户端会自动发现其他节点并进行集群操作。


elasticsearch 实现高亮查询操作:

Elasticsearch支持高亮查询操作,可以将查询结果中匹配的关键词标记出来,方便用户快速定位到关键信息。以下是Java语言实现Elasticsearch高亮查询操作的示例代码:

  • 首先,我们需要使用Java Elasticsearch客户端库来连接Elasticsearch集群。在本示例中,我们使用Elasticsearch Java High Level REST Client库来连接Elasticsearch集群。

  • 我们需要定义一个ElasticsearchIndex类来管理Elasticsearch索引。在本示例中,我们使用一个名为"test_index"的索引来进行查询操作。

public class ElasticsearchIndex {
    public static final String INDEX_NAME = "test_index";
}
 

我们需要定义一个ElasticsearchUtil类来封装Elasticsearch操作。在本示例中,我们实现了以下方法:

  • search:使用Elasticsearch Java High Level REST Client库的Search API进行查询操作,并返回高亮结果。

public class ElasticsearchUtil {
    private static final RestHighLevelClient client = new RestHighLevelClient(
            RestClient.builder(new HttpHost("localhost", 9200, "http")));

    public static SearchResponse search(String keyword) throws IOException {
        SearchRequest request = new SearchRequest(ElasticsearchIndex.INDEX_NAME);
        SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
        sourceBuilder.query(QueryBuilders.matchQuery("content", keyword));
        HighlightBuilder highlightBuilder = new HighlightBuilder();
        highlightBuilder.field("content");
        highlightBuilder.preTags("<em>");
        highlightBuilder.postTags("</em>");
        sourceBuilder.highlighter(highlightBuilder);
        request.source(sourceBuilder);
        return client.search(request, RequestOptions.DEFAULT);
    }
}
 

我们可以在Java应用程序中调用ElasticsearchUtil类中的方法来实现Elasticsearch高亮查询功能。例如,当需要查询包含指定关键词的文档时,我们可以调用search方法,并传递关键词。查询结果中匹配的关键词会被标记为<em>和</em>。

下面是一个Java代码示例,演示了如何使用Elasticsearch实现高亮查询:

public class Main {public static void main(String[] args) throws IOException {String keyword = "Elasticsearch";SearchResponse response = ElasticsearchUtil.search(keyword);for (SearchHit hit : response.getHits().getHits()) {String content = hit.getSourceAsMap().get("content").toString();String highlight = hit.getHighlightFields().get("content").fragments()[0].toString();System.out.println("匹配文本:" + content);System.out.println("高亮文本:" + highlight);}}
}

这个示例中,我们演示了如何使用Elasticsearch Java High Level REST Client库实现高亮查询。需要注意的是,使用Elasticsearch需要在Elasticsearch服务器端启用集群模式,并配置好集群节点, 一些小的细节需要注意好 

相关文章:

[elasticsearch 实现插入查询小demo ]

目录 前言: 。以下是Java语言实现Elasticsearch数据插入和批量插入的示例代码&#xff1a; 我们需要定义一个ElasticsearchUtil类来封装Elasticsearch操作。在本示例中&#xff0c;我们实现了以下方法&#xff1a; 下面是一个Java代码示例&#xff0c;演示了如何使用Elast…...

因为计算机中丢失VCRUNTIME140怎么办?为什么会丢失VCRUNTIME140.dll

vcruntime140.dll是一个Windows动态链接库&#xff0c;其主要功能是为C/C编译的程序提供运行时支持。这个库在Microsoft Visual Studio 2015中被引入&#xff0c;其名称中的“140”代表版本号。在我们打开运行软件或者游戏程序的时候&#xff0c;电脑提示因为计算机中丢失VCRUN…...

【满分】【华为OD机试真题2023B卷 JAVAJS】数字游戏

华为OD2023(B卷)机试题库全覆盖,刷题指南点这里 数字游戏 时间限制:1s 空间限制:256MB 限定语言:不限 题目描述: 小明玩一个游戏。系统发1+n张牌,每张牌上有一个整数。第一张给小明,后n张按照发牌顺序排成连续的一行。需要小明判断,后n张牌中,是否存在连续的若干张…...

NLP常用的三种中文分词工具对比

本文将对三种中文分词工具进行使用尝试&#xff0c;这三种工具分别为&#xff1a;哈工大的LTP&#xff0c;结巴分词以及北大的pkuseg。 1、准备 首先我们先准备好环境&#xff0c;即需要安装三个模块&#xff1a; pyltpjiebapkusegLTP的分词模型文件cws.model 在用户字典中…...

Visual C++ 6.0环境开发PACS影像系统的技术指标和精准算法

一、技术指标 •图像文件格式&#xff1a;DCM、JPG、BMP、TIF等 •可支持显示属性设置&#xff1a;24/32位真彩&#xff1b;256位色&#xff08;黑白&#xff09; •可支持监视器分辨率&#xff1a;1024&#xfe61;768&#xff1b;1280&#xfe61;1024&#xff1b;1600&…...

接口测试介绍以及用例编写

6.1 接口 6.1.1 接口概述 定义&#xff1a; 接口就是API&#xff08;Application Programming Interface&#xff0c;应用程序接口&#xff09;&#xff0c;是一个软件或服务对外提供的接口&#xff0c;别人只要调用这接口&#xff0c;而内部如何实现&#xff0c;不需要关心。…...

MATLAB迭代的三种方式以及相关案例举例

系列文章目录 MATLAB矩阵的分解函数与案例举例 MATLAB当中线性方程组、不定方程组、奇异方程组、超定方程组的介绍 MATLAB语句实现方阵性质的验证 MATLAB绘图函数的相关介绍——海底测量、二维与三维图形绘制 MATLAB求函数极限的简单介绍 文章目录 系列文章目录 前言 …...

测试替身Test Doubles的5类型(Mockito)

测试替身Test Doubles的5类型(Mockito) 我们有一个名为 BankAccount 的类。 数据库用于存储和检索银行帐户信息。 我们想测试 BankAccount 中的逻辑&#xff0c;而不必担心它使用的底层数据库.由此类实现——它将 SQL 查询发送到数据库并返回其中包含的值。 测试替身Test Dou…...

【C++】链表

链表是一种常见的数据结构&#xff0c;用于存储和组织数据。它的每个元素被称为结点&#xff08;Node&#xff09;&#xff0c;结点是链表的基本单位&#xff0c;链表由一系列结点&#xff08;Node&#xff09;组成&#xff0c;每个结点包含两个部分&#xff1a;数据部分&#…...

day42_jsp

今日内容 零、 复习昨日 一、JSP 二、EL 三、JSTL 四、MVC 零、 复习昨日 一、JSP 1.0 引言 现有问题 在之前学习Servlet时&#xff0c;服务端通过Servlet响应客户端页面&#xff0c;有什么不足之处&#xff1f; 开发方式麻烦&#xff1a;继承父类、覆盖方法、配置Web.xml或注…...

JAVA面试八股整理——基础部分

JAVA 基础 JVM JDK JRE JVM java虚拟机&#xff0c;针对不同的系统&#xff0c;使用相同的字节码会给出相同结果。一次编译&#xff0c;随处可运行 JDK Java SDK 提供给开发者使用&#xff0c;创建和编译Java程序。包含了JRE&#xff0c;同时包含了其它工具&#xff08;jav…...

【JavaSE】Java基础语法(二十八):HashSet集合

文章目录 1. HashSet集合概述和特点2. HashSet集合的基本应用3. 哈希值4. HashSet集合存储学生对象并遍历【应用】 1. HashSet集合概述和特点 底层数据结构是哈希表存取无序不可以存储重复元素没有索引,不能使用普通for循环遍历 2. HashSet集合的基本应用 存储字符串并遍历 …...

压缩感知重构之匹配追踪算法

算法的重构是压缩感知中重要的一步&#xff0c;是压缩感知的关键之处。因为重构算法关系着信号能否精确重建&#xff0c;国内外的研究学者致力于压缩感知的信号重建&#xff0c;并且取得了很大的进展&#xff0c;提出了很多的重构算法&#xff0c;每种算法都各有自己的优缺点&a…...

【SpinalHDL快速入门】4.6、复合类型之Vec

文章目录 1.1、描述1.2、声明1.2.1、实例 1.3、运算符1.3.1、比较&#xff08;Comparison&#xff09;1.3.2、类型转换&#xff08;Type cast&#xff09;1.3.3、杂项&#xff08;Misc&#xff09;1.3.4、Lib辅助函数&#xff08;Lib helper functions&#xff09; 1.1、描述 …...

探访世优科技数字人虚拟直播产品体系 | 世优开放日再次成功举行

2023年5月30日&#xff0c;世优科技全栈技术产品体验活动&#xff08;第二期&#xff09;顺利落下帷幕。此次活动共邀请到30余位各行各业的嘉宾到场&#xff0c;在两个多小时的开放日活动中&#xff0c;世优科技全面展示数字人及虚拟直播领域的技术产品体系。来访嘉宾们全程体验…...

有奖励!2023陕西省首台(套)重大技术装备产品项目申报条件、认定材料

本文整理了2023陕西省首台&#xff08;套&#xff09;重大技术装备产品项目申报条件&#xff0c;认定材料等相关内容&#xff0c;感兴趣的朋友快跟小编一起来看看吧&#xff01; 一、重点支持方向及领域 重点支持方向及领域&#xff1a;高档工业母机、电力装备、大型矿山和冶金…...

2023/6/6总结

CSS 如果想要实现背景颜色渐变效果&#xff1a; left是从左边开始&#xff0c;如果想要对角线比如&#xff0c;左上角就是left top&#xff0c;渐变效果始终是沿着一条线来实现的。 下面是跟着视频教学用flex布局写的一个移动端网页&#xff1a; html代码&#xff1a; <!…...

api习题

// 1 整数或者小数 // String a"378.000"; // String rex"[1-9]\\d*|[0-9]|*\\.[0-9]*"; // System.out.println(a.matches(rex)); // 2 只能输入数字&#xff1a; // String rex"\\b*"; // 3 只能输入n位的数字&#xff1a; // String r…...

(STL之string)string类的用法详解

string类成员函数PART1 成员函数(构造函数拷贝构造函数)&#xff1a;string 函数原型&#xff1a; string(); string (const string& str); string (const string& str, size_t pos, size_t len npos); string (const char* s); string (const char* s, size_t n)…...

基于RT-Thread快速上手SD NAND 虚拟文件系统

SD NAND 也称之为贴片式TF卡&#xff0c;贴片式SD卡&#xff0c;采用标准的SDIO接口&#xff0c;兼容SPI接口。下图所示为CS 新一代CS SD NAND NP1GCR01-AOW 大小为128M&#xff0c;对比128M的SD卡&#xff0c;可以看到贴片SD卡尺寸更小&#xff0c;不要SD卡座&#xff0c;占…...

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …...

【kafka】Golang实现分布式Masscan任务调度系统

要求&#xff1a; 输出两个程序&#xff0c;一个命令行程序&#xff08;命令行参数用flag&#xff09;和一个服务端程序。 命令行程序支持通过命令行参数配置下发IP或IP段、端口、扫描带宽&#xff0c;然后将消息推送到kafka里面。 服务端程序&#xff1a; 从kafka消费者接收…...

oracle与MySQL数据库之间数据同步的技术要点

Oracle与MySQL数据库之间的数据同步是一个涉及多个技术要点的复杂任务。由于Oracle和MySQL的架构差异&#xff0c;它们的数据同步要求既要保持数据的准确性和一致性&#xff0c;又要处理好性能问题。以下是一些主要的技术要点&#xff1a; 数据结构差异 数据类型差异&#xff…...

SpringBoot+uniapp 的 Champion 俱乐部微信小程序设计与实现,论文初版实现

摘要 本论文旨在设计并实现基于 SpringBoot 和 uniapp 的 Champion 俱乐部微信小程序&#xff0c;以满足俱乐部线上活动推广、会员管理、社交互动等需求。通过 SpringBoot 搭建后端服务&#xff0c;提供稳定高效的数据处理与业务逻辑支持&#xff1b;利用 uniapp 实现跨平台前…...

RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程

本文较长&#xff0c;建议点赞收藏&#xff0c;以免遗失。更多AI大模型应用开发学习视频及资料&#xff0c;尽在聚客AI学院。 本文全面剖析RNN核心原理&#xff0c;深入讲解梯度消失/爆炸问题&#xff0c;并通过LSTM/GRU结构实现解决方案&#xff0c;提供时间序列预测和文本生成…...

算法笔记2

1.字符串拼接最好用StringBuilder&#xff0c;不用String 2.创建List<>类型的数组并创建内存 List arr[] new ArrayList[26]; Arrays.setAll(arr, i -> new ArrayList<>()); 3.去掉首尾空格...

Go 语言并发编程基础:无缓冲与有缓冲通道

在上一章节中&#xff0c;我们了解了 Channel 的基本用法。本章将重点分析 Go 中通道的两种类型 —— 无缓冲通道与有缓冲通道&#xff0c;它们在并发编程中各具特点和应用场景。 一、通道的基本分类 类型定义形式特点无缓冲通道make(chan T)发送和接收都必须准备好&#xff0…...

毫米波雷达基础理论(3D+4D)

3D、4D毫米波雷达基础知识及厂商选型 PreView : https://mp.weixin.qq.com/s/bQkju4r6med7I3TBGJI_bQ 1. FMCW毫米波雷达基础知识 主要参考博文&#xff1a; 一文入门汽车毫米波雷达基本原理 &#xff1a;https://mp.weixin.qq.com/s/_EN7A5lKcz2Eh8dLnjE19w 毫米波雷达基础…...

关于easyexcel动态下拉选问题处理

前些日子突然碰到一个问题&#xff0c;说是客户的导入文件模版想支持部分导入内容的下拉选&#xff0c;于是我就找了easyexcel官网寻找解决方案&#xff0c;并没有找到合适的方案&#xff0c;没办法只能自己动手并分享出来&#xff0c;针对Java生成Excel下拉菜单时因选项过多导…...

Vue 模板语句的数据来源

&#x1f9e9; Vue 模板语句的数据来源&#xff1a;全方位解析 Vue 模板&#xff08;<template> 部分&#xff09;中的表达式、指令绑定&#xff08;如 v-bind, v-on&#xff09;和插值&#xff08;{{ }}&#xff09;都在一个特定的作用域内求值。这个作用域由当前 组件…...