最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java操作ElasticSearch的實例詳解

 更新時間:2025年01月21日 09:27:37   作者:牛肉胡辣湯  
Elasticsearch?是一個分布式的搜索和分析引擎,廣泛用于全文搜索、日志分析等場景,本文將介紹如何在?Java?應(yīng)用中使用?Elasticsearch?客戶端來連接和操作?Elasticsearch?集群,希望對大家有所幫助

簡介

Elasticsearch 是一個分布式的搜索和分析引擎,廣泛用于全文搜索、日志分析等場景。本文將介紹如何在 Java 應(yīng)用中使用 Elasticsearch 客戶端來連接和操作 Elasticsearch 集群。

環(huán)境準備

1. 安裝 Elasticsearch

首先,確保你的環(huán)境中已經(jīng)安裝了 Elasticsearch。可以從 ??Elasticsearch 官方網(wǎng)站??下載最新版本的 Elasticsearch,并按照官方文檔進行安裝和啟動。

2. 添加依賴

在你的 Java 項目中,需要添加 Elasticsearch 的客戶端依賴。如果你使用的是 Maven,可以在 ??pom.xml?? 文件中添加以下依賴:

<dependency>
    <groupId>org.elasticsearch.client</groupId>
    <artifactId>elasticsearch-rest-high-level-client</artifactId>
    <version>7.10.2</version>
</dependency>

連接 Elasticsearch

1. 創(chuàng)建客戶端

使用 ??RestHighLevelClient?? 類來創(chuàng)建一個連接到 Elasticsearch 集群的客戶端。

import org.elasticsearch.client.RestHighLevelClient;
import org.apache.http.HttpHost;
 
public class ElasticsearchClient {
    public static RestHighLevelClient createClient() {
        return new RestHighLevelClient(
            RestClient.builder(
                new HttpHost("localhost", 9200, "http")
            )
        );
    }
}

2. 關(guān)閉客戶端

在完成所有操作后,記得關(guān)閉客戶端以釋放資源。

try {
    client.close();
} catch (IOException e) {
    e.printStackTrace();
}

基本操作

1. 創(chuàng)建索引

創(chuàng)建一個新的索引,并指定一些設(shè)置和映射。

import org.elasticsearch.action.admin.indices.create.CreateIndexRequest;
import org.elasticsearch.action.admin.indices.create.CreateIndexResponse;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.common.xcontent.XContentType;
 
public class IndexOperations {
    public static void createIndex(RestHighLevelClient client) throws IOException {
        CreateIndexRequest request = new CreateIndexRequest("test_index");
        request.mapping("{\n" +
                "  \"properties\": {\n" +
                "    \"title\": {\n" +
                "      \"type\": \"text\"\n" +
                "    },\n" +
                "    \"content\": {\n" +
                "      \"type\": \"text\"\n" +
                "    }\n" +
                "  }\n" +
                "}", XContentType.JSON);
        CreateIndexResponse response = client.indices().create(request, RequestOptions.DEFAULT);
        System.out.println("Index created: " + response.isAcknowledged());
    }
}

2. 插入數(shù)據(jù)

向索引中插入一條文檔。

import org.elasticsearch.action.index.IndexRequest;
import org.elasticsearch.action.index.IndexResponse;
import org.elasticsearch.common.xcontent.XContentType;
 
public class DocumentOperations {
    public static void indexDocument(RestHighLevelClient client) throws IOException {
        String jsonString = "{" +
                "\"title\":\"Elasticsearch基礎(chǔ)教程\"," +
                "\"content\":\"Elasticsearch是一個分布式搜索和分析引擎\"}";
        IndexRequest request = new IndexRequest("test_index").source(jsonString, XContentType.JSON);
        IndexResponse response = client.index(request, RequestOptions.DEFAULT);
        System.out.println("Document indexed with ID: " + response.getId());
    }
}

3. 查詢數(shù)據(jù)

從索引中查詢文檔。

import org.elasticsearch.action.get.GetRequest;
import org.elasticsearch.action.get.GetResponse;
 
public class SearchOperations {
    public static void getDocument(RestHighLevelClient client) throws IOException {
        GetRequest request = new GetRequest("test_index", "1");
        GetResponse response = client.get(request, RequestOptions.DEFAULT);
        if (response.isExists()) {
            System.out.println("Document found: " + response.getSourceAsString());
        } else {
            System.out.println("Document not found.");
        }
    }
}

通過上述步驟,你可以在 Java 應(yīng)用中輕松地連接和操作 Elasticsearch 集群。本文介紹了如何創(chuàng)建客戶端、創(chuàng)建索引、插入文檔和查詢文檔。這些基本操作為更復(fù)雜的使用場景奠定了基礎(chǔ)。

以上就是使用 Java 操作 Elasticsearch 的一個簡單示例。希望對你有幫助!當然可以!Elasticsearch 是一個分布式的搜索和分析引擎,廣泛用于全文搜索、日志分析、實時應(yīng)用監(jiān)控等場景。

下面是一個使用 Java 操作 Elasticsearch 的示例代碼,包括連接到 ES 集群、創(chuàng)建索引、插入文檔、查詢文檔等基本操作。

環(huán)境準備

添加依賴:在你的 Maven 項目的 ??pom.xml?? 文件中添加 Elasticsearch 客戶端依賴。

<dependency>
    <groupId>org.elasticsearch.client</groupId>
    <artifactId>elasticsearch-rest-high-level-client</artifactId>
    <version>7.10.2</version>
</dependency>

配置 Elasticsearch:確保你有一個運行中的 Elasticsearch 實例。你可以使用 Docker 快速啟動一個:

docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:7.10.2

示例代碼

以下是一個完整的 Java 示例代碼,展示了如何連接到 Elasticsearch 集群、創(chuàng)建索引、插入文檔和查詢文檔。

import org.apache.http.HttpHost;
import org.elasticsearch.action.index.IndexRequest;
import org.elasticsearch.action.index.IndexResponse;
import org.elasticsearch.action.search.SearchRequest;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.common.xcontent.XContentType;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.search.SearchHit;
import org.elasticsearch.search.builder.SearchSourceBuilder;
 
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
 
public class ElasticsearchExample {
 
    public static void main(String[] args) {
        // 創(chuàng)建 RestHighLevelClient 客戶端
        RestHighLevelClient client = new RestHighLevelClient(
                RestClient.builder(
                        new HttpHost("localhost", 9200, "http")
                )
        );
 
        try {
            // 創(chuàng)建索引
            createIndex(client);
 
            // 插入文檔
            insertDocument(client);
 
            // 查詢文檔
            searchDocument(client);
 
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            // 關(guān)閉客戶端
            try {
                client.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
 
    private static void createIndex(RestHighLevelClient client) throws IOException {
        // 創(chuàng)建索引請求
        Map<String, Object> mappings = new HashMap<>();
        mappings.put("properties", Map.of(
                "title", Map.of("type", "text"),
                "content", Map.of("type", "text")
        ));
 
        String mappingJson = XContentType.JSON.toString(mappings);
        IndexRequest indexRequest = new IndexRequest("my_index")
                .source(mappingJson, XContentType.JSON);
 
        // 執(zhí)行請求
        IndexResponse indexResponse = client.index(indexRequest, RequestOptions.DEFAULT);
        System.out.println("Index created: " + indexResponse.getResult());
    }
 
    private static void insertDocument(RestHighLevelClient client) throws IOException {
        // 創(chuàng)建文檔
        Map<String, Object> document = new HashMap<>();
        document.put("title", "Elasticsearch Example");
        document.put("content", "This is an example of using Elasticsearch with Java.");
 
        // 創(chuàng)建索引請求
        IndexRequest indexRequest = new IndexRequest("my_index")
                .id("1")
                .source(document);
 
        // 執(zhí)行請求
        IndexResponse indexResponse = client.index(indexRequest, RequestOptions.DEFAULT);
        System.out.println("Document inserted: " + indexResponse.getResult());
    }
 
    private static void searchDocument(RestHighLevelClient client) throws IOException {
        // 創(chuàng)建搜索請求
        SearchRequest searchRequest = new SearchRequest("my_index");
        SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
        searchSourceBuilder.query(QueryBuilders.matchQuery("title", "Elasticsearch"));
        searchRequest.source(searchSourceBuilder);
 
        // 執(zhí)行請求
        SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);
 
        // 處理響應(yīng)
        for (SearchHit hit : searchResponse.getHits().getHits()) {
            System.out.println("Document found: " + hit.getSourceAsString());
        }
    }
}

代碼說明

  • 創(chuàng)建客戶端:使用 ??RestHighLevelClient?? 連接到 Elasticsearch 集群。
  • 創(chuàng)建索引:定義索引的映射并創(chuàng)建索引。
  • 插入文檔:創(chuàng)建一個文檔并將其插入到指定的索引中。
  • 查詢文檔:使用匹配查詢(??matchQuery??)來搜索包含特定關(guān)鍵字的文檔。

運行代碼

確保你的 Elasticsearch 實例正在運行,然后運行上述 Java 程序。你應(yīng)該會看到索引創(chuàng)建、文檔插入和查詢結(jié)果的輸出。

希望這個示例對你有幫助!如果有任何問題或需要進一步的幫助,請隨時告訴我。當然可以!Elasticsearch 是一個分布式的搜索和分析引擎,廣泛用于全文搜索、日志分析、實時應(yīng)用監(jiān)控等場景。在 Java 應(yīng)用中操作 Elasticsearch 通常需要使用官方提供的客戶端庫,如 ??elasticsearch-rest-high-level-client??(現(xiàn)已停止更新)或更現(xiàn)代的 ??elasticsearch-java?? 客戶端。

以下是一個詳細的步驟和示例代碼,展示如何在 Java 中使用 ??elasticsearch-java?? 客戶端來操作 Elasticsearch 實例:

1. 添加依賴

首先,在你的 ??pom.xml?? 文件中添加 Elasticsearch 客戶端的依賴。這里以 Maven 為例:

<dependency>
    <groupId>co.elastic.clients</groupId>
    <artifactId>elasticsearch-java</artifactId>
    <version>8.6.2</version> <!-- 請根據(jù)實際情況選擇合適的版本 -->
</dependency>

2. 創(chuàng)建客戶端

創(chuàng)建一個 Elasticsearch 客戶端實例,用于與 Elasticsearch 集群進行通信。

import co.elastic.clients.elasticsearch.ElasticsearchClient;
import co.elastic.clients.json.jackson.JacksonJsonpMapper;
import co.elastic.clients.transport.ElasticsearchTransport;
import co.elastic.clients.transport.rest_client.RestClientTransport;
import org.apache.http.HttpHost;
import org.elasticsearch.client.RestClient;
 
public class ElasticsearchClientExample {
 
    public static ElasticsearchClient createClient() {
        // 創(chuàng)建 Rest 客戶端
        RestClient restClient = RestClient.builder(
            new HttpHost("localhost", 9200, "http")
        ).build();
 
        // 創(chuàng)建 Elasticsearch 客戶端
        ElasticsearchTransport transport = new RestClientTransport(
            restClient, new JacksonJsonpMapper()
        );
 
        return new ElasticsearchClient(transport);
    }
}

3. 索引文檔

接下來,我們演示如何索引(插入)一個文檔到 Elasticsearch 中。

import co.elastic.clients.elasticsearch.core.IndexResponse;
import co.elastic.clients.elasticsearch.core.IndexRequest;
import co.elastic.clients.elasticsearch.core.IndexResponse.Result;
import com.fasterxml.jackson.databind.ObjectMapper;
 
public class IndexDocumentExample {
 
    public static void main(String[] args) throws Exception {
        ElasticsearchClient client = ElasticsearchClientExample.createClient();
 
        // 創(chuàng)建一個文檔對象
        MyDocument document = new MyDocument();
        document.setId(1);
        document.setTitle("Elasticsearch Java Client Example");
        document.setContent("This is an example of using the Elasticsearch Java client.");
 
        // 使用 ObjectMapper 將對象轉(zhuǎn)換為 JSON 字符串
        ObjectMapper objectMapper = new ObjectMapper();
        String jsonString = objectMapper.writeValueAsString(document);
 
        // 創(chuàng)建索引請求
        IndexRequest<MyDocument> request = new IndexRequest.Builder<MyDocument>()
            .index("my_index")
            .id(String.valueOf(document.getId()))
            .document(document)
            .build();
 
        // 執(zhí)行索引請求
        IndexResponse response = client.index(request);
 
        // 檢查響應(yīng)結(jié)果
        if (response.result() == Result.Created) {
            System.out.println("Document indexed successfully.");
        } else {
            System.out.println("Failed to index document.");
        }
 
        // 關(guān)閉客戶端
        client.close();
    }
}
 
class MyDocument {
    private int id;
    private String title;
    private String content;
 
    // Getters and Setters
    public int getId() {
        return id;
    }
 
    public void setId(int id) {
        this.id = id;
    }
 
    public String getTitle() {
        return title;
    }
 
    public void setTitle(String title) {
        this.title = title;
    }
 
    public String getContent() {
        return content;
    }
 
    public void setContent(String content) {
        this.content = content;
    }
}

4. 查詢文檔

接下來,我們演示如何查詢 Elasticsearch 中的文檔。

import co.elastic.clients.elasticsearch.core.SearchRequest;
import co.elastic.clients.elasticsearch.core.SearchResponse;
import co.elastic.clients.elasticsearch.core.search.Hit;
 
public class SearchDocumentExample {
 
    public static void main(String[] args) throws Exception {
        ElasticsearchClient client = ElasticsearchClientExample.createClient();
 
        // 創(chuàng)建查詢請求
        SearchRequest request = new SearchRequest.Builder()
            .index("my_index")
            .query(q -> q.match(m -> m.field("title").query("Elasticsearch")))
            .build();
 
        // 執(zhí)行查詢請求
        SearchResponse<MyDocument> response = client.search(request, MyDocument.class);
 
        // 處理查詢結(jié)果
        for (Hit<MyDocument> hit : response.hits().hits()) {
            MyDocument document = hit.source();
            System.out.println("Found document: " + document.getTitle());
        }
 
        // 關(guān)閉客戶端
        client.close();
    }
}

5. 刪除文檔

最后,我們演示如何刪除 Elasticsearch 中的文檔。

import co.elastic.clients.elasticsearch.core.DeleteRequest;
import co.elastic.clients.elasticsearch.core.DeleteResponse;
import co.elastic.clients.elasticsearch.core.DeleteResponse.Result;
 
public class DeleteDocumentExample {
 
    public static void main(String[] args) throws Exception {
        ElasticsearchClient client = ElasticsearchClientExample.createClient();
 
        // 創(chuàng)建刪除請求
        DeleteRequest request = new DeleteRequest.Builder()
            .index("my_index")
            .id("1")
            .build();
 
        // 執(zhí)行刪除請求
        DeleteResponse response = client.delete(request);
 
        // 檢查響應(yīng)結(jié)果
        if (response.result() == Result.Deleted) {
            System.out.println("Document deleted successfully.");
        } else {
            System.out.println("Failed to delete document.");
        }
 
        // 關(guān)閉客戶端
        client.close();
    }
}

總結(jié)

本文代碼展示了如何在 Java 中使用 ??elasticsearch-java?? 客戶端進行基本的 CRUD 操作。你可以根據(jù)實際需求擴展這些示例,例如處理更復(fù)雜的查詢、批量操作等

以上就是Java操作ElasticSearch的實例詳解的詳細內(nèi)容,更多關(guān)于Java操作ElasticSearch的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Java進行文件格式校驗的方案詳解

    Java進行文件格式校驗的方案詳解

    這篇文章主要為大家詳細介紹了Java中進行文件格式校驗的相關(guān)方案,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2025-04-04
  • Java中if語句return用法和有無括號的區(qū)別

    Java中if語句return用法和有無括號的區(qū)別

    本文主要介紹了Java中if語句return用法和有無括號的區(qū)別,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-12-12
  • Java模擬計算機的整數(shù)乘積計算功能示例

    Java模擬計算機的整數(shù)乘積計算功能示例

    這篇文章主要介紹了Java模擬計算機的整數(shù)乘積計算功能,簡單分析了計算機數(shù)值進制轉(zhuǎn)換與通過位移進行乘積計算的原理,并結(jié)合具體實例給出了java模擬計算機成績運算的相關(guān)操作技巧,需要的朋友可以參考下
    2017-09-09
  • java使用wait()和notify()線程間通訊的實現(xiàn)

    java使用wait()和notify()線程間通訊的實現(xiàn)

    Java 線程通信是將多個獨立的線程個體進行關(guān)聯(lián)處理,使得線程與線程之間能進行相互通信,本文就介紹了java使用wait()和notify()線程間通訊的實現(xiàn),感興趣的可以了解一下
    2023-09-09
  • Java多線程實現(xiàn)阻塞隊列的示例代碼

    Java多線程實現(xiàn)阻塞隊列的示例代碼

    本文主要介紹了Java多線程實現(xiàn)阻塞隊列的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-12-12
  • Java集合類之TreeSet的用法詳解

    Java集合類之TreeSet的用法詳解

    這篇文章主要為大家詳細介紹了Java集合類中TreeSet的用法,文中的示例代碼講解詳細,對我們學(xué)習(xí)Java有一定的幫助,感興趣的可以了解一下
    2022-08-08
  • Java實現(xiàn)字符串轉(zhuǎn)換成可執(zhí)行代碼的方法

    Java實現(xiàn)字符串轉(zhuǎn)換成可執(zhí)行代碼的方法

    今天小編就為大家分享一篇Java實現(xiàn)字符串轉(zhuǎn)換成可執(zhí)行代碼的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07
  • 解決使用@ResponseBody后返回500錯誤的問題

    解決使用@ResponseBody后返回500錯誤的問題

    這篇文章主要介紹了解決使用@ResponseBody后返回500錯誤的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • 詳解slf4j+logback在java工程中的配置

    詳解slf4j+logback在java工程中的配置

    這篇文章主要介紹了slf4j+logback在java工程中的配置,對日志組件logback也進行了簡單介紹,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2015-08-08
  • 項目中SpringBoot配置文件未生效的原因分析與解決方法

    項目中SpringBoot配置文件未生效的原因分析與解決方法

    在日常開發(fā) Spring Boot 項目的時候,大家應(yīng)該都遇到過這樣一種情況:明明寫了 application.yml,但是項目跑起來之后,配置好像完全沒被加載,下面我們就來聊聊Spring Boot 配置文件未生效 的幾個典型場景與解決方法吧
    2025-09-09

最新評論

广宗县| 吉安市| 阿克陶县| 辽阳市| 方正县| 义马市| 资讯 | 大田县| 南京市| 平安县| 山东省| 湖口县| 永顺县| 息烽县| 鄂托克前旗| 德安县| 青州市| 霍山县| 江达县| 巴青县| 金乡县| 娱乐| 新乐市| 融水| 宁陕县| 明光市| 遂川县| 广宗县| 大悟县| 玛纳斯县| 冀州市| 纳雍县| 栖霞市| 祥云县| 恩平市| 合山市| 永靖县| 永清县| 祁东县| 汉川市| 通许县|