国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Java實戰(zhàn):SpringBoot+ElasticSearch 實現(xiàn)模糊查詢

這篇具有很好參考價值的文章主要介紹了Java實戰(zhàn):SpringBoot+ElasticSearch 實現(xiàn)模糊查詢。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

本文將詳細介紹如何使用SpringBoot整合ElasticSearch,實現(xiàn)模糊查詢、批量CRUD、排序、分頁和高亮功能。我們將深入探討ElasticSearch的相關概念和技術細節(jié),以及如何使用SpringData Elasticsearch庫簡化開發(fā)過程。

1. 引言

ElasticSearch是一個基于Lucene構建的開源搜索引擎,它提供了一個分布式、多租戶的全文搜索引擎,具有高可靠性、可擴展性和易用性。SpringBoot是Spring框架的一個模塊,它簡化了基于Spring的應用程序的開發(fā)和部署。將SpringBoot與ElasticSearch整合,可以實現(xiàn)強大的搜索功能,如模糊查詢、批量CRUD、排序、分頁和高亮等。

2. 環(huán)境準備

在開始之前,請確保已安裝Java和Maven,并配置好相應的環(huán)境變量。接下來,我們將創(chuàng)建一個SpringBoot項目,并添加ElasticSearch依賴。
2.1 創(chuàng)建SpringBoot項目
使用Spring Initializr(https://start.spring.io/)創(chuàng)建一個SpringBoot項目,選擇相應的依賴,如Spring Web、Spring Data Elasticsearch等。
2.2 添加ElasticSearch依賴
在項目的pom.xml文件中添加ElasticSearch依賴:

<dependencies>
    <!-- SpringBoot Elasticsearch 依賴 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
    </dependency>
    <!-- 其他依賴 -->
</dependencies>

3. 配置ElasticSearch

在application.properties或application.yml文件中配置ElasticSearch相關屬性:

# application.properties
spring.data.elasticsearch.cluster-name=my-cluster-name
spring.data.elasticsearch.cluster-nodes=localhost:9300

4. 創(chuàng)建ElasticSearch實體類

創(chuàng)建一個ElasticSearch實體類,用于映射ElasticSearch索引中的文檔:

@Document(indexName = "blog", type = "article")
public class Article {
    @Id
    private String id;
    private String title;
    private String content;
    // getter and setter
}

5. 創(chuàng)建ElasticSearch repository接口

創(chuàng)建一個繼承ElasticsearchRepository接口的repository接口,用于操作ElasticSearch索引:

public interface ArticleRepository extends ElasticsearchRepository<Article, String> {
}

6. 實現(xiàn)模糊查詢、批量CRUD、排序、分頁、高亮

6.1 模糊查詢
在ArticleRepository接口中添加一個自定義方法,用于實現(xiàn)模糊查詢:

List<Article> findByTitleContaining(String title);

在Controller中添加一個接口,用于接收前端查詢參數(shù)并調用repository方法:

@RestController
public class ArticleController {
    @Autowired
    private ArticleRepository articleRepository;
    @GetMapping("/search")
    public List<Article> search(@RequestParam("title") String title) {
        return articleRepository.findByTitleContaining(title);
    }
}

6.2 批量CRUD
在Controller中添加一個接口,用于接收前端提交的批量操作請求:

@PostMapping("/batch")
public ResponseEntity<String> batch(@RequestBody List<Article> articles) {
    for (Article article : articles) {
        articleRepository.save(article);
    }
    return ResponseEntity.ok("批量操作成功!");
}

6.3 排序
在ElasticsearchRepository接口中,預定義了許多排序的方法,如findByTitleOrderByCreateTimeDesc。如果這些方法無法滿足需求,可以使用@Query注解自定義查詢,并指定排序規(guī)則:

@Query("{\"bool\": {\"must\": {\"match\": {\"title\": \"?0\"}}}}")
List<Article> findByTitle(String title, Sort sort);

6.4 分頁
在ElasticsearchRepository接口中,預定義了許多分頁的方法,如findByTitle(String title, Pageable pageable)。在Controller中,可以使用Pageable對象接收分頁參數(shù):

@GetMapping("/search")
public Page<Article> search(@RequestParam("title") String title, Pageable pageable) {
    return articleRepository.findByTitle(title, pageable);
}

6.5 高亮
在ElasticsearchRepository接口中,預定義了許多高亮的方法,如findByTitle(String title, Pageable pageable)。在Controller中,可以使用Pageable對象接收分頁參數(shù),并返回一個帶有高亮信息的Page對象:

@GetMapping("/search")
public Page<Article> search(@RequestParam("title") String title, Pageable pageable) {
    NativeSearchQueryBuilder queryBuilder = new NativeSearchQueryBuilder();
    queryBuilder.withQuery(matchQuery("title", title));
    queryBuilder.withHighlightFields(new HighlightBuilder.Field("title").preTags("<em>").postTags("</em>"));
    queryBuilder.withPageable(pageable);
    NativeSearchQuery searchQuery = queryBuilder.build();
    Page<Article> articles = articleRepository.search(searchQuery);
    return articles;
}

7. 完整代碼示例

將上述所有代碼片段組合在一起,我們得到了一個完整的SpringBoot+ElasticSearch實現(xiàn)模糊查詢、批量CRUD、排序、分頁和高亮的示例。下面是完整的代碼示例:

// Article.java
@Document(indexName = "blog", type = "article")
public class Article {
    @Id
    private String id;
    private String title;
    private String content;
    // getter and setter
}
// ArticleRepository.java
public interface ArticleRepository extends ElasticsearchRepository<Article, String> {
    List<Article> findByTitleContaining(String title);
    Page<Article> findByTitle(String title, Pageable pageable);
}
// ArticleController.java
@RestController
public class ArticleController {
    @Autowired
    private ArticleRepository articleRepository;
    @GetMapping("/search")
    public Page<Article> search(@RequestParam("title") String title, Pageable pageable) {
        NativeSearchQueryBuilder queryBuilder = new NativeSearchQueryBuilder();
        queryBuilder.withQuery(matchQuery("title", title));
        queryBuilder.withHighlightFields(new HighlightBuilder.Field("title").preTags("<em>").postTags("</em>"));
        queryBuilder.withPageable(pageable);
        NativeSearchQuery searchQuery = queryBuilder.build();
        Page<Article> articles = articleRepository.search(searchQuery);
        return articles;
    }
    @PostMapping("/batch")
    public ResponseEntity<String> batch(@RequestBody List<Article> articles) {
        for (Article article : articles) {
            articleRepository.save(article);
        }
        return ResponseEntity.ok("批量操作成功!");
    }
}
// application.properties
spring.data.elasticsearch.cluster-name=my-cluster-name
spring.data.elasticsearch.cluster-nodes=localhost:9300

8. 總結

本文詳細介紹了如何使用SpringBoot整合ElasticSearch,實現(xiàn)模糊查詢、批量CRUD、排序、分頁和高亮功能。請注意,實際部署時,您可能需要根據(jù)實際情況調整ElasticSearch集群配置,以及索引的創(chuàng)建和映射策略。此外,對于生產環(huán)境,您可能還需要考慮更多的錯誤處理和資源管理策略,例如處理可能出現(xiàn)的異常情況,以及優(yōu)化查詢性能等。
最后,如果您對SpringBoot+ElasticSearch整合或其他相關主題有更多的問題,歡迎在評論區(qū)留言討論。文章來源地址http://www.zghlxwxcb.cn/news/detail-857814.html

到了這里,關于Java實戰(zhàn):SpringBoot+ElasticSearch 實現(xiàn)模糊查詢的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • SpringBoot 實現(xiàn) elasticsearch 查詢操作(RestHighLevelClient 的案例實戰(zhàn))

    SpringBoot 實現(xiàn) elasticsearch 查詢操作(RestHighLevelClient 的案例實戰(zhàn))

    上一節(jié)講述了 SpringBoot 實現(xiàn) elasticsearch 索引操作,這一章節(jié)講述 SpringBoot 實現(xiàn) elasticsearch 查詢操作。 案例用到的索引庫結構

    2024年02月11日
    瀏覽(18)
  • java-springboot整合ElasticSearch8.2復雜查詢

    近期有大數(shù)據(jù)項目需要用到es,而又是比較新的es版本,網(wǎng)上也很少有8.x的java整合教程,所有寫下來供各位參考。 首先 1.導包: 2.客戶端連接代碼EsUtilConfigClint: 一開始按照其他博主的方法,長時間連接不操作查詢再次調用查詢時會報錯timeout,所以要設置RequestConfigCallback 3

    2024年02月11日
    瀏覽(16)
  • ElasticSearch入門:使用ES來實現(xiàn)模糊查詢功能

    本文針對在工作中遇到的需求:通過es來實現(xiàn) 模糊查詢 來進行總結;模糊查詢的具體需求是:查詢基金/A股/港股等金融數(shù)據(jù),要求可以根據(jù) 字段 , 拼音首字母 , 部分拼音全稱 進行聯(lián)想查詢;需要注意的是,金融數(shù)據(jù)名稱中可能不止包含漢字,還有英文,數(shù)字,特殊字符等

    2023年04月09日
    瀏覽(23)
  • Elasticsearch實現(xiàn)對同一字段既能精準查詢也能模糊查詢

    Elasticsearch實現(xiàn)對同一字段既能精準查詢也能模糊查詢

    ?使用@MultiField注解給字段取別名并設置為keyword類型 dao層如下 實體類如下 模糊查詢測試如下: 可以看到模糊查詢content中一共有3條數(shù)據(jù)有我這個分詞 ?精準查詢如下: ?可以看到精準查詢就只有一條結果,符合精準查詢。 注意:該方法需要版本支持,具體版本未知,但是在

    2024年02月02日
    瀏覽(18)
  • Java桌面程序:加載數(shù)據(jù)-模糊查詢-刪除-新增

    Java桌面程序:加載數(shù)據(jù)-模糊查詢-刪除-新增

    1.DB.java 2.BaseDao.java 3.兩個窗體 完整代碼 完整代碼 ① 程序一開始執(zhí)行時,需要加載顯示數(shù)據(jù): 主窗體中-修改構造器中的代碼 ② 定義初始化表格的方法: 主窗體中-完整代碼 ③ 點擊查詢按鈕時的操作—模糊查詢: 完整代碼-在主窗體中編寫 ④ 實現(xiàn)刪除按鈕的功能: 完整代

    2024年02月10日
    瀏覽(15)
  • Spring Boot 集成 ElasticSearch:實現(xiàn)模糊查詢、批量 CRUD、排序、分頁和高亮功能

    Spring Boot 集成 ElasticSearch:實現(xiàn)模糊查詢、批量 CRUD、排序、分頁和高亮功能

    文章來源:https://blog.csdn.net/qq_52355487/article/details/123805713 在pom.xml里加入如下依賴 非常重要:檢查依賴版本是否與你當前所用的版本是否一致,如果不一致,會連接失??! 1.創(chuàng)建、判斷存在、刪除索引 2.對文檔的CRUD 創(chuàng)建文檔: 注意:如果添加時不指定文檔ID,他就會隨機生成

    2024年02月04日
    瀏覽(26)
  • ElasticSearch進階:多種查詢操作,各種ES查詢以及在Java中的實現(xiàn)

    ElasticSearch進階:多種查詢操作,各種ES查詢以及在Java中的實現(xiàn)

    目錄 前言 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日
    瀏覽(25)
  • ElasticSearch dense_vector向量查詢-Java實現(xiàn)

    本文介紹如何使用ElasticSearch的Java High Level API執(zhí)行向量查詢,向量類型為dense_vector。 在這個案例中,我們首先創(chuàng)建了一個RestHighLevelClient對象,并定義了索引名稱和類型名稱。 為了限制返回的文檔數(shù)量, 我們設置了minScore,from,size變量。 然后,定義查詢的向量,創(chuàng)建查詢腳

    2024年02月08日
    瀏覽(14)
  • 【ElasticSearch】ES自動補全查詢與Java接口實現(xiàn)

    【ElasticSearch】ES自動補全查詢與Java接口實現(xiàn)

    自動補全就是當用戶在搜索框輸入字符時,我們應該提示出與該字符有關的搜索項。 要實現(xiàn)根據(jù)字母做補全,就必須對文檔按照拼音分詞。GitHub上有相關插件,地址:https://github.com/medcl/elasticsearch-analysis-pinyin,下載和ES對應的版本。 安裝步驟: 解壓 上傳到虛擬機中,elasti

    2024年02月15日
    瀏覽(19)
  • 《vue3實戰(zhàn)》通過indexOf方法實現(xiàn)電影評價系統(tǒng)的模糊查詢功能

    《vue3實戰(zhàn)》通過indexOf方法實現(xiàn)電影評價系統(tǒng)的模糊查詢功能

    目錄 前言 一、indexOf是什么?indexOf有什么作用? 含義: 作用: 二、功能實現(xiàn) 這段是查詢過程中過濾篩選功能的代碼部分: 分析: 這段是查詢用戶和性別功能的代碼部分: 分析: 三、最終效果圖 查詢輸入框所在圖: 輸入姓名羊和性別男模糊查詢后的效果圖: 輸入姓名羊和

    2024年02月10日
    瀏覽(24)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包