如何在Java中使用Elasticsearch

如何在Java中使用Elasticsearch

大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!

概述

Elasticsearch 是一个开源的分布式搜索引擎,用于全文搜索、结构化搜索和分析。本文将介绍如何在Java应用程序中使用Elasticsearch,包括连接、索引文档、搜索以及一些最佳实践。

连接到Elasticsearch

要在Java中使用Elasticsearch,首先需要添加 Elasticsearch Java 客户端库的依赖。推荐使用官方提供的 High Level REST Client。

Gradle 依赖配置示例
groovy 复制代码
dependencies {
    implementation 'org.elasticsearch.client:elasticsearch-rest-high-level-client:7.17.0'
}
Maven 依赖配置示例
xml 复制代码
<dependency>
    <groupId>org.elasticsearch.client</groupId>
    <artifactId>elasticsearch-rest-high-level-client</artifactId>
    <version>7.17.0</version>
</dependency>

建立连接

使用 RestClient 建立与 Elasticsearch 的连接:

java 复制代码
package cn.juwatech.elasticsearch;

import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestHighLevelClient;

public class ElasticsearchClient {

    private static final String ELASTICSEARCH_HOST = "localhost";
    private static final int ELASTICSEARCH_PORT = 9200;

    public RestHighLevelClient createClient() {
        return new RestHighLevelClient(
                RestClient.builder(
                        new HttpHost(ELASTICSEARCH_HOST, ELASTICSEARCH_PORT, "http")));
    }

    public static void main(String[] args) {
        ElasticsearchClient client = new ElasticsearchClient();
        RestHighLevelClient restClient = client.createClient();
        
        // 使用 restClient 进行后续操作,如索引文档、搜索等
    }
}

索引文档

向 Elasticsearch 中索引文档:

java 复制代码
import org.elasticsearch.action.index.IndexRequest;
import org.elasticsearch.action.index.IndexResponse;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.common.xcontent.XContentType;
import org.elasticsearch.index.Index;

public class IndexDocumentExample {

    public void indexDocument(RestHighLevelClient client) throws IOException {
        IndexRequest request = new IndexRequest("posts");
        request.id("1");
        String jsonString = "{" +
                "\"user\":\"juwatech\"," +
                "\"postDate\":\"2024-07-01\"," +
                "\"message\":\"trying out Elasticsearch\"" +
                "}";
        request.source(jsonString, XContentType.JSON);

        IndexResponse indexResponse = client.index(request, RequestOptions.DEFAULT);
        System.out.println("Indexed document with ID: " + indexResponse.getId());
    }

    public static void main(String[] args) throws IOException {
        ElasticsearchClient client = new ElasticsearchClient();
        RestHighLevelClient restClient = client.createClient();

        IndexDocumentExample example = new IndexDocumentExample();
        example.indexDocument(restClient);

        restClient.close();
    }
}

搜索文档

从 Elasticsearch 中搜索文档:

java 复制代码
import org.elasticsearch.action.search.SearchRequest;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.search.builder.SearchSourceBuilder;

public class SearchDocumentExample {

    public void searchDocument(RestHighLevelClient client) throws IOException {
        SearchRequest searchRequest = new SearchRequest("posts");
        SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
        sourceBuilder.query(QueryBuilders.termQuery("user", "juwatech"));
        searchRequest.source(sourceBuilder);

        SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);
        System.out.println("Search hits: " + searchResponse.getHits().getTotalHits().value);
    }

    public static void main(String[] args) throws IOException {
        ElasticsearchClient client = new ElasticsearchClient();
        RestHighLevelClient restClient = client.createClient();

        SearchDocumentExample example = new SearchDocumentExample();
        example.searchDocument(restClient);

        restClient.close();
    }
}

最佳实践

  • 连接池管理:使用连接池管理 RestClient,提高资源利用率和性能。
  • 异常处理:合理处理连接、请求过程中的异常,保证代码的健壮性。
  • 索引设计:根据应用需求设计合理的索引结构,优化搜索和存储效率。

总结

通过本文的介绍,你学习了如何在Java应用程序中使用Elasticsearch,包括建立连接、索引文档、搜索以及一些最佳实践。这些技能可以帮助你更好地利用Elasticsearch的强大功能来支持你的应用需求。

微赚淘客系统3.0小编出品,必属精品!

相关推荐
Yan.love9 分钟前
开发场景中Java 集合的最佳选择
java·数据结构·链表
椰椰椰耶12 分钟前
【文档搜索引擎】搜索模块的完整实现
java·搜索引擎
大G哥13 分钟前
java提高正则处理效率
java·开发语言
Mitch31142 分钟前
【漏洞复现】CVE-2015-3337 Arbitrary File Reading
elasticsearch·网络安全·docker·漏洞复现
智慧老师43 分钟前
Spring基础分析13-Spring Security框架
java·后端·spring
lxyzcm1 小时前
C++23新特性解析:[[assume]]属性
java·c++·spring boot·c++23
Mitch3111 小时前
【漏洞复现】CVE-2015-5531 Arbitrary File Reading
web安全·elasticsearch·网络安全·docker·漏洞复现
V+zmm101341 小时前
基于微信小程序的乡村政务服务系统springboot+论文源码调试讲解
java·微信小程序·小程序·毕业设计·ssm
Oneforlove_twoforjob2 小时前
【Java基础面试题025】什么是Java的Integer缓存池?
java·开发语言·缓存
xmh-sxh-13142 小时前
常用的缓存技术都有哪些
java