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

MPNet:旋转机械轻量化故障诊断模型详解python代码复现

目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...

业务系统对接大模型的基础方案:架构设计与关键步骤

业务系统对接大模型&#xff1a;架构设计与关键步骤 在当今数字化转型的浪潮中&#xff0c;大语言模型&#xff08;LLM&#xff09;已成为企业提升业务效率和创新能力的关键技术之一。将大模型集成到业务系统中&#xff0c;不仅可以优化用户体验&#xff0c;还能为业务决策提供…...

7.4.分块查找

一.分块查找的算法思想&#xff1a; 1.实例&#xff1a; 以上述图片的顺序表为例&#xff0c; 该顺序表的数据元素从整体来看是乱序的&#xff0c;但如果把这些数据元素分成一块一块的小区间&#xff0c; 第一个区间[0,1]索引上的数据元素都是小于等于10的&#xff0c; 第二…...

stm32G473的flash模式是单bank还是双bank?

今天突然有人stm32G473的flash模式是单bank还是双bank&#xff1f;由于时间太久&#xff0c;我真忘记了。搜搜发现&#xff0c;还真有人和我一样。见下面的链接&#xff1a;https://shequ.stmicroelectronics.cn/forum.php?modviewthread&tid644563 根据STM32G4系列参考手…...

51c自动驾驶~合集58

我自己的原文哦~ https://blog.51cto.com/whaosoft/13967107 #CCA-Attention 全局池化局部保留&#xff0c;CCA-Attention为LLM长文本建模带来突破性进展 琶洲实验室、华南理工大学联合推出关键上下文感知注意力机制&#xff08;CCA-Attention&#xff09;&#xff0c;…...

练习(含atoi的模拟实现,自定义类型等练习)

一、结构体大小的计算及位段 &#xff08;结构体大小计算及位段 详解请看&#xff1a;自定义类型&#xff1a;结构体进阶-CSDN博客&#xff09; 1.在32位系统环境&#xff0c;编译选项为4字节对齐&#xff0c;那么sizeof(A)和sizeof(B)是多少&#xff1f; #pragma pack(4)st…...

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

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

python如何将word的doc另存为docx

将 DOCX 文件另存为 DOCX 格式&#xff08;Python 实现&#xff09; 在 Python 中&#xff0c;你可以使用 python-docx 库来操作 Word 文档。不过需要注意的是&#xff0c;.doc 是旧的 Word 格式&#xff0c;而 .docx 是新的基于 XML 的格式。python-docx 只能处理 .docx 格式…...

JAVA后端开发——多租户

数据隔离是多租户系统中的核心概念&#xff0c;确保一个租户&#xff08;在这个系统中可能是一个公司或一个独立的客户&#xff09;的数据对其他租户是不可见的。在 RuoYi 框架&#xff08;您当前项目所使用的基础框架&#xff09;中&#xff0c;这通常是通过在数据表中增加一个…...

STM32---外部32.768K晶振(LSE)无法起振问题

晶振是否起振主要就检查两个1、晶振与MCU是否兼容&#xff1b;2、晶振的负载电容是否匹配 目录 一、判断晶振与MCU是否兼容 二、判断负载电容是否匹配 1. 晶振负载电容&#xff08;CL&#xff09;与匹配电容&#xff08;CL1、CL2&#xff09;的关系 2. 如何选择 CL1 和 CL…...