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

Elasticsearch 在 Java 开发中的应用

 Elasticsearch 在 Java 开发中的应用

Elasticsearch 是一个开源的分布式搜索引擎,广泛应用于全文搜索、日志分析等场景。本文将介绍 Elasticsearch 在 Java 开发中的基本使用和一些实际场景中的应用。

 1. 引入 Elasticsearch 依赖

首先,需要在 Maven 或 Gradle 项目中引入 Elasticsearch 的 Java 客户端库。在 Maven 项目中,可以添加以下依赖:

```xml
<dependency>
    <groupId>org.elasticsearch.client</groupId>
    <artifactId>elasticsearch-rest-high-level-client</artifactId>
    <version>7.15.0</version>
</dependency>
```

 2. 连接 Elasticsearch 服务器

在使用 Elasticsearch 之前,首先需要建立与 Elasticsearch 服务器的连接。以下是一个简单的连接示例:

```java
RestHighLevelClient client = new RestHighLevelClient(
        RestClient.builder(new HttpHost("localhost", 9200, "http"))
);
```

 3. 创建索引

在 Elasticsearch 中,索引类似于数据库中的表。下面是一个创建索引的示例:

```java
CreateIndexRequest request = new CreateIndexRequest("blog");
client.indices().create(request, RequestOptions.DEFAULT);
```

 4. 添加文档

一旦索引创建完成,可以向其添加文档。以下是一个添加文档的简单示例:

```java
IndexRequest indexRequest = new IndexRequest("blog")
        .id("1")
        .source(Maps.newHashMap("title", "Getting Started with Elasticsearch",
                "content", "Elasticsearch is a powerful search engine."));
client.index(indexRequest, RequestOptions.DEFAULT);
```

5. 查询文档

使用 Elasticsearch 进行文档检索是其主要功能之一。以下是一个简单的查询示例:

```java
SearchRequest searchRequest = new SearchRequest("blog");
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
searchSourceBuilder.query(QueryBuilders.matchQuery("title", "Elasticsearch"));
searchRequest.source(searchSourceBuilder);
SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);

// 处理搜索结果
SearchHits hits = searchResponse.getHits();
for (SearchHit hit : hits) {
    Map<String, Object> sourceAsMap = hit.getSourceAsMap();
    System.out.println(sourceAsMap);
}
```

 6. 高级搜索功能

Elasticsearch 提供了强大的搜索功能,支持复杂的查询、聚合等操作。以下是一个使用聚合查询的示例:

```java
SearchRequest searchRequest = new SearchRequest("blog");
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
searchSourceBuilder.aggregation(AggregationBuilders.terms("popular_tags").field("tags"));
searchRequest.source(searchSourceBuilder);
SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);

// 处理聚合结果
Terms terms = searchResponse.getAggregations().get("popular_tags");
for (Terms.Bucket bucket : terms.getBuckets()) {
    System.out.println(bucket.getKeyAsString() + ": " + bucket.getDocCount() + " articles");
}
```

 7. 异常处理和资源释放

在实际开发中,必须注意异常处理和资源释放。使用 try-with-resources 语句可以确保资源在使用完毕后得到正确释放:

```java
try (RestHighLevelClient client = new RestHighLevelClient(
        RestClient.builder(new HttpHost("localhost", 9200, "http"))
)) {
    // 执行 Elasticsearch 操作
} catch (IOException e) {
    e.printStackTrace();
}
```

 结语

通过以上简要介绍,你可以在 Java 项目中开始使用 Elasticsearch,并充分利用其强大的搜索和分析功能。在实际项目中,还可以结合 Spring Data Elasticsearch 等框架简化开发工作。希望这篇文章对你在 Java 开发中使用 Elasticsearch 提供了帮助。

http://www.lryc.cn/news/229726.html

相关文章:

  • linux 的uart驱动框架分析
  • 头歌答案HTML——基础
  • 【数据结构——队列的实现(单链表)】
  • 《LeetCode力扣练习》代码随想录——链表(移除链表元素---Java)
  • linux 安装 mini conda,linux下安装 Miniconda
  • 机器人 Null impedance(零阻抗)梳理
  • MDM9205开发环境搭建与编译调试
  • Linux操作系统使用及C高级编程-D3Linux shell命令(权限、输入输出)
  • 无线充,大功率小家电,智能家居,无人机快速充电等产品供电 LDR6328S芯片TYUPE-C PD诱骗电压 USB-C解决PD电源取电问题
  • 2023数字科技生态大会-数字安全论坛 学习笔记
  • 玩转ChatGPT:ARIMA模型定制GPT-1.0
  • CSDN每日一题学习训练——Java版(字符串相乘、子集、删除链表的倒数第 N 个结点)
  • PostgreSQL 判断JSONB数组是否包含特定的元素
  • idea中搭建Spring boot项目(借助Spring Initializer)
  • acwing算法基础之搜索与图论--染色法判断二分图
  • 塔式服务器是什么服务器?
  • nodejs+express接口全局拦截和环境变量设置
  • 深度学习之基于YoloV5的目标检测和双目测距系统
  • 如何显示标注的纯黑mask图
  • 【算法每日一练]-图论(保姆级教程 篇1(模板篇)) #floyed算法 #dijkstra算法 #spfa算法
  • c语言数据结构---十字链表
  • 使用python电脑轻量级控制手机—adb命令和手机投屏
  • VBA技术资料MF82:替换文件夹中文件名中的字符
  • 如何利用大模型蒸馏出小模型实现降本
  • CentOS 中启动 Jar 包
  • 法治智能起航 | 拓世法宝AI智慧政务一体机重塑法治格局,开启智能司法新篇章
  • 【华为云IaaS基础三件套之----计算ECS、网络EIP、存储EVS】
  • c语言数据结构---广义表
  • 2023.11.12使用flask对图片进行黑白处理(base64编码方式传输)
  • MATLAB中Filter Designer的使用以及XILINX Coefficient(.coe)File的导出