ES-JavaAPI操作

这篇具有很好参考价值的文章主要介绍了ES-JavaAPI操作。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.简介

Elasticsearch是一个开源的分布式搜索和分析引擎,可以快速实时地存储、搜索和分析海量数据。它提供了HTTP RESTful API供开发者使用,也有Java等多种语言的客户端库,方便开发者进行数据的增删改查操作。

本篇文章将围绕ES-JavaAPI展开,详细介绍如何使用Java操作Elasticsearch

2.环境准备

在开始编写Java代码之前,需要先安装并启动Elasticsearch服务。可以从官方网站下载并安装Elasticsearch。安装完成后,通过命令行启动服务,并确保服务正常运行。

3.导入依赖

接下来,创建一个Java项目,并在项目的构建文件中添加ElasticsearchJava客户端库依赖。可以使用MavenGradle进行依赖管理。

Maven依赖:

<dependency>

    <groupId>org.elasticsearch.client</groupId>

    <artifactId>elasticsearch-rest-high-level-client</artifactId>

    <version>7.8.1</version>

</dependency>

Gradle依赖:

implementation 'org.elasticsearch.client:elasticsearch-rest-high-level-client:7.8.1'

4.连接Elasticsearch

在开始进行操作之前,首先需要连接Elasticsearch。使用Elasticsearch提供的RestHighLevelClient类来实现连接。

代码示例: 

es java,综合,elasticsearch,jenkins,大数据,http,全文检索,搜索引擎

import org.apache.http.HttpHost;

import org.elasticsearch.client.RestClient;

import org.elasticsearch.client.RestHighLevelClient;

public class ElasticsearchConnector {

    private RestHighLevelClient client;

    public ElasticsearchConnector() {

        client = new RestHighLevelClient(

                RestClient.builder(

                        new HttpHost("localhost", 9200, "http")

                )

        );

    }

    public RestHighLevelClient getClient() {

        return client;

    }

}

上述代码创建了一个ElasticsearchConnector类,并在构造方法中初始化了RestHighLevelClient客户端并与Elasticsearch建立连接。其中,连接的地址为localhost,端口为9200

5.创建索引

Elasticsearch中,索引类似于关系型数据库中的表,可以理解为一个数据集合。在创建索引之前,需要先连接Elasticsearch

代码示例:

import org.elasticsearch.action.admin.indices.create.CreateIndexRequest;

import org.elasticsearch.action.admin.indices.create.CreateIndexResponse;

import org.elasticsearch.action.support.master.AcknowledgedResponse;

import org.elasticsearch.client.indices.GetIndexRequest;

import org.elasticsearch.client.indices.GetIndexResponse;

import org.elasticsearch.client.RestHighLevelClient;

public class IndexOperations {

    public static void main(String[] args) throws IOException {

        ElasticsearchConnector connector = new ElasticsearchConnector();

        RestHighLevelClient client = connector.getClient();

        // 创建索引

        String indexName = "my_index";

        CreateIndexRequest request = new CreateIndexRequest(indexName);

        CreateIndexResponse createIndexResponse = client.indices().create(request, RequestOptions.DEFAULT);

        boolean acknowledged = createIndexResponse.isAcknowledged();

        if (acknowledged) {

            System.out.println("索引创建成功");

        }

        // 判断索引是否存在

        GetIndexRequest getIndexRequest = new GetIndexRequest(indexName);

        boolean exists = client.indices().exists(getIndexRequest, RequestOptions.DEFAULT);

        if (exists) {

            System.out.println("索引已存在");

        }

        client.close();

    }

}

上述代码示例中,首先创建了一个名为my_index的索引,然后通过create()方法来创建索引。创建成功后,将会获得一个CreateIndexResponse对象,可以通过isAcknowledged()方法来判断是否创建成功。

接着,使用exists()方法判断索引是否存在。

6.添加文档

在已创建的索引中添加文档。文档是Elasticsearch中的最小单位数据。

代码示例:

import org.elasticsearch.action.index.IndexRequest;

import org.elasticsearch.action.index.IndexResponse;

import org.elasticsearch.client.RestHighLevelClient;

import org.elasticsearch.common.xcontent.XContentType;

public class DocumentOperations {

    public static void main(String[] args) throws IOException {

        ElasticsearchConnector connector = new ElasticsearchConnector();

        RestHighLevelClient client = connector.getClient();

        // 添加文档

        String indexName = "my_index";

        String documentId = "1";

        String jsonString = "{\"title\":\"Java入门教程\",\"author\":\"Tom\",\"content\":\"Java是一门面向对象的编程语言\"}";

        IndexRequest request = new IndexRequest(indexName).id(documentId).source(jsonString, XContentType.JSON);

        IndexResponse indexResponse = client.index(request, RequestOptions.DEFAULT);

        if (indexResponse.getResult() == DocWriteResponse.Result.CREATED) {

            System.out.println("文档添加成功");

        }

        client.close();

    }

}

上述代码通过IndexRequest来创建一个索引请求,并指定索引的名称、文档ID和内容。然后使用index()方法将文档添加到指定索引中。添加成功后,将会获得一个IndexResponse对象,可以通过getResult()方法来判断添加结果。

7.获取文档

在已创建的索引中获取文档。

代码示例:

import org.elasticsearch.action.get.GetRequest;

import org.elasticsearch.action.get.GetResponse;

import org.elasticsearch.client.RestHighLevelClient;

public class DocumentOperations {

    public static void main(String[] args) throws IOException {

        ElasticsearchConnector connector = new ElasticsearchConnector();

        RestHighLevelClient client = connector.getClient();

        // 获取文档

        String indexName = "my_index";

        String documentId = "1";

        GetRequest getRequest = new GetRequest(indexName, documentId);

        GetResponse getResponse = client.get(getRequest, RequestOptions.DEFAULT);

        if (getResponse.isExists()) {

            String sourceAsString = getResponse.getSourceAsString();

            System.out.println(sourceAsString);

        }

        client.close();

    }

}

上述代码通过GetRequest来创建一个获取文档的请求,并指定索引的名称和文档ID。然后使用get()方法获取指定的文档。获取成功后,将会获得一个GetResponse对象,可以通过isExists()方法判断文档是否存在,通过getSourceAsString()方法获取文档的内容。

8.更新文档

在已创建的索引中更新文档。

代码示例:

import org.elasticsearch.action.update.UpdateRequest;

import org.elasticsearch.action.update.UpdateResponse;

import org.elasticsearch.client.RestHighLevelClient;

import org.elasticsearch.common.doc.DocWriteRequest;

import org.elasticsearch.common.doc.DocWriteResponse;

import org.elasticsearch.common.xcontent.XContentType;

public class DocumentOperations {

    public static void main(String[] args) throws IOException {

        ElasticsearchConnector connector = new ElasticsearchConnector();

        RestHighLevelClient client = connector.getClient();

        // 更新文档

        String indexName = "my_index";

        String documentId = "1";

        String jsonString = "{\"title\":\"Java入门教程\",\"author\":\"Tom\",\"content\":\"Java是一门面向对象的编程语言,非常流行\"}";

        UpdateRequest request = new UpdateRequest(indexName, documentId).doc(jsonString, XContentType.JSON);

        request.setRefreshPolicy(WriteRequest.RefreshPolicy.WAIT_UNTIL);

        UpdateResponse updateResponse = client.update(request, RequestOptions.DEFAULT);

        if (updateResponse.getResult() == DocWriteResponse.Result.UPDATED) {

            System.out.println("文档更新成功");

        }

        client.close();

    }

}

上述代码通过UpdateRequest来创建一个更新文档的请求,并指定索引的名称、文档ID和更新的内容。然后使用update()方法来更新文档。更新成功后,将会获得一个UpdateResponse对象,可以通过getResult()方法来判断更新结果。

9.删除文档

在已创建的索引中删除文档。

代码示例:

import org.elasticsearch.action.delete.DeleteRequest;

import org.elasticsearch.action.delete.DeleteResponse;

import org.elasticsearch.action.support.replication.ReplicationResponse;

import org.elasticsearch.client.RestHighLevelClient;

public class DocumentOperations {

    public static void main(String[] args) throws IOException {

        ElasticsearchConnector connector = new ElasticsearchConnector();

        RestHighLevelClient client = connector.getClient();

        // 删除文档

        String indexName = "my_index";

        String documentId = "1";

        DeleteRequest request = new DeleteRequest(indexName, documentId);

        DeleteResponse deleteResponse = client.delete(request, RequestOptions.DEFAULT);

        if (deleteResponse.getResult() == DocWriteResponse.Result.DELETED) {

            System.out.println("文档删除成功");

        }

        client.close();

    }

}

上述代码通过DeleteRequest来创建一个删除文档的请求,并指定索引的名称和文档ID。然后使用delete()方法来删除文档。删除成功后,将会获得一个DeleteResponse对象,可以通过getResult()方法来判断删除结果。

10.搜索文档

在已创建的索引中搜索文档。

代码示例:

import org.elasticsearch.action.search.SearchRequest;

import org.elasticsearch.action.search.SearchResponse;

import org.elasticsearch.client.RestHighLevelClient;

import org.elasticsearch.index.query.QueryBuilders;

import org.elasticsearch.search.SearchHit;

import org.elasticsearch.search.builder.SearchSourceBuilder;

public class DocumentOperations {

    public static void main(String[] args) throws IOException {

        ElasticsearchConnector connector = new ElasticsearchConnector();

        RestHighLevelClient client = connector.getClient();

        // 搜索文档

        String indexName = "my_index";

        String searchQuery = "Java";

        SearchRequest searchRequest = new SearchRequest(indexName);

        SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();

        searchSourceBuilder.query(QueryBuilders.matchQuery("content", searchQuery));

        searchRequest.source(searchSourceBuilder);

        SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);

        SearchHit[] searchHits = searchResponse.getHits().getHits();

        for (SearchHit hit : searchHits) {

            String sourceAsString = hit.getSourceAsString();

            System.out.println(sourceAsString);

        }

        client.close();

    }

}

上述代码通过SearchRequest来创建一个搜索文档的请求,并指定索引的名称。然后使用SearchSourceBuilder来构建查询条件,这里使用了QueryBuilders.matchQuery()方法来定义查询内容包含指定关键字的查询条件。最后使用search()方法来执行搜索操作。搜索成功后,将会获得一个SearchResponse对象,可以通过getHits()方法获取搜索结果,遍历结果并打印出来。

总结

本文介绍了如何使用ES-JavaAPI进行Elasticsearch的操作,包括连接、创建索引、添加文档、获取文档、更新文档、删除文档和搜索文档。通过本文的示例代码,可以更好地理解和掌握ES-JavaAPI的使用方法。

以上示例代码仅为简要演示,并未考虑异常处理和性能优化等方面的内容,建议在实际项目中根据具体需求,进行适当的优化和异常处理。同时,建议参考Elasticsearch官方文档和API文档,深入学习ES-JavaAPI的更多功能和用法。文章来源地址https://www.toymoban.com/news/detail-736654.html

到了这里,关于ES-JavaAPI操作的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Elasticsearch学习笔记五】es常用的JAVA API、es整合SpringBoot项目中使用、利用JAVA代码操作es、RestHighLevelClient客户端对象

    目录 一、Maven项目集成Easticsearch 1)客户端对象 2)索引操作 3)文档操作 4)高级查询 二、springboot项目集成Spring Data操作Elasticsearch 1)pom文件 2)yaml 3)数据实体类 4)配置类 5)Dao数据访问对象 6)索引操作 7)文档操作 8)文档搜索 三、springboot项目集成bboss操作elasticsearch

    2023年04月09日
    浏览(51)
  • javaAPI操作Elasticsearch_elasticsearch 修改字段 java api

    } } import com.zyw.elasticsearchdemo.constants.HotelConstants; import org.apache.http.HttpHost; import org.elasticsearch.action.admin.indices.delete.DeleteIndexRequest; import org.elasticsearch.client.RequestOptions; import org.elasticsearch.client.RestClient; import org.elasticsearch.client.RestHighLevelClient; import org.elasticsearch.client.indices.Create

    2024年04月17日
    浏览(35)
  • ElasticSearch进阶:多种查询操作,各种ES查询以及在Java中的实现

    目录 前言 1 词条查询 1.1 等值查询-term 1.2 多值查询-terms 1.3 范围查询-range 1.4 前缀查询-prefix 1.5 通配符查询-wildcard 2 复合查询 2.1 布尔查询 2.2 Filter查询 3 聚合查询 3.1 最值、平均值、求和 3.2 去重查询 3.3 分组聚合 3.3.1 单条件分组 3.3.2 多条件分组 3.4 过滤聚合 ElasticSearch 第一篇

    2024年02月02日
    浏览(53)
  • 【ES】一、ES入门及JavaAPI使用

    ES的倒排索引和ES与Mysql的使用对比 什么是ES: ES全称是ElasticSearch,是一个开源的搜索引擎,可以帮助我们快速从海量数据里搜索到需要的数据; 为什么要有ES:MySql或其它传统的RDBMS有一些问题 模糊查询时,如果查询条件是以 % 开头,那么查询的性能会急剧下降 文本检索结果

    2024年01月24日
    浏览(30)
  • Java SpringBoot API 实现ES(Elasticsearch)搜索引擎的一系列操作(超详细)(模拟数据库操作)

    小编使用的是elasticsearch-7.3.2 基础说明: 启动:进入elasticsearch-7.3.2/bin目录,双击elasticsearch.bat进行启动,当出现一下界面说明,启动成功。也可以访问http://localhost:9200/ 启动ES管理:进入elasticsearch-head-master文件夹,然后进入cmd命令界面,输入npm run start 即可启动。访问http

    2024年02月04日
    浏览(57)
  • 最新版ES8的client API操作 Elasticsearch Java API client 8.0

    作者:ChenZhen 本人不常看网站消息,有问题通过下面的方式联系: 邮箱:1583296383@qq.com vx: ChenZhen_7 我的个人博客地址:https://www.chenzhen.space/🌐 版权:本文为博主的原创文章,本文版权归作者所有,转载请附上原文出处链接及本声明。📝 如果对你有帮助,请给一个小小的s

    2024年02月04日
    浏览(41)
  • 4、Elasticsearch7.6.1 Java api操作ES(CRUD、两种分页方式、高亮显示)和Elasticsearch SQL详细示例

    1、介绍lucene的功能以及建立索引、搜索单词、搜索词语和搜索句子四个示例实现 2、Elasticsearch7.6.1基本介绍、2种部署方式及验证、head插件安装、分词器安装及验证 3、Elasticsearch7.6.1信息搜索示例(索引操作、数据操作-添加、删除、导入等、数据搜索及分页) 4、Elasticsearch7

    2024年02月16日
    浏览(79)
  • 【ES】JavaAPI学习-01 环境配置 索引创建

    本文档及关联项目用于ElasticSearch的JavaAPI的学习。 本节将完成环境配置,索引创建 注:Elasticsearch 是一个开源、分布式、基于 Lucene 的搜索引擎和分析引擎。 Elasticsearch 支持: 全文搜索,强大的全文搜索能力,能够对文本内容进行快速、准确的搜索,并支持各种高级搜索语法

    2023年04月08日
    浏览(30)
  • 什么是ES(Elasticsearch)?详解+操作

    elastic:富有弹性的 search:搜索 此软件不再是SpringColud提供的,他也不针对微服务的项目开发 Elasticsearch和Redis/mysqly一样,不仅服务于java开发,其他语言也可以使用 它的功能类似于数据库,能高效的从大量数据中搜索匹配指定的内容 数据保存在硬盘中 Es的底层: 使用了一套名

    2024年02月06日
    浏览(35)
  • Elasticsearch(四)——ES基本操作

    一、Rest风格说明( 非常重要 ) Rest风格一种软件架构风格,而不是标准,只是提供了一组设计原则和约束条件。 它主要用于客户端和服务器交互类的软件。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。 基于Rest命令说明 method url地址 描述 PUT localh

    2024年02月02日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包