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

Springboot整合Elasticsearch(Es)

這篇具有很好參考價(jià)值的文章主要介紹了Springboot整合Elasticsearch(Es)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

一. 引入依賴

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.75</version>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>

?二. 創(chuàng)建ES配置類

package com.lrs.config;

import org.apache.http.HttpHost;
import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestHighLevelClient;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * @作者:劉壬杉
 * @創(chuàng)建時(shí)間 2022/8/16 16:30
 **/
@Configuration
public class EsConfig {
    @Bean
    public RestHighLevelClient restHighLevelClient(){
        RestHighLevelClient restHighLevelClient = new RestHighLevelClient(RestClient.builder(new HttpHost("127.0.0.1",9200,"http")));
        return restHighLevelClient;
    }
}

?三. 關(guān)于對(duì)文檔的操作

首先 在測(cè)試類中引入RestHighLevelClient對(duì)象

@Resource
    private RestHighLevelClient client;

其次 準(zhǔn)備一個(gè)User對(duì)象

package com.lrs.entity;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * @作者:劉壬杉
 * @創(chuàng)建時(shí)間 2022/8/16 19:21
 **/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
    private String id;
    private String name;
    private String address;
    private Integer age;

    public User(String name, String address, Integer age) {
        this.name = name;
        this.address = address;
        this.age = age;
    }
}

3.1 對(duì)索引的操作

3.1.1 創(chuàng)建索引

//創(chuàng)建索引
    @Test
    void testCreateIndex() throws IOException {
        CreateIndexRequest createIndexRequest = new CreateIndexRequest("test04");
        CreateIndexResponse createIndexResponse = client.indices().create(createIndexRequest, RequestOptions.DEFAULT);
        System.out.println(createIndexResponse.isAcknowledged());
    }

?運(yùn)行結(jié)果:創(chuàng)建成功返回true

3.1.2 刪除索引

//刪除索引
    @Test
    void testDeleteIndex() throws Exception{
        DeleteIndexRequest deleteIndexRequest = new DeleteIndexRequest("test04");
        AcknowledgedResponse delete = client.indices().delete(deleteIndexRequest, RequestOptions.DEFAULT);
        System.out.println(delete.isAcknowledged());
    }

運(yùn)行結(jié)果:刪除成功返回true

?3.1.3 判斷索引是否存在

//判斷索引是否存在
    @Test
    void testExistsIndex() throws Exception{
        GetIndexRequest getIndexRequest = new GetIndexRequest("test04");
        boolean exists = client.indices().exists(getIndexRequest, RequestOptions.DEFAULT);
        System.out.println(exists);
    }

運(yùn)行結(jié)果:存在返回true,不存在返回false.

3.2 對(duì)文檔的操作

3.2.1 添加文檔

//添加文檔
    @Test
    void testCreateDoc() throws Exception{
        IndexRequest indexRequest = new IndexRequest("test04");
        indexRequest.id("1");
        indexRequest.source(JSON.toJSONString(new User("張三","北京",25)), XContentType.JSON);
        IndexResponse index = client.index(indexRequest, RequestOptions.DEFAULT);
        System.out.println(index.getResult());
    }

運(yùn)行結(jié)果:添加成功返回 CREATED

3.2.2 查詢文檔----根據(jù)id查詢

//查詢文檔 -- id
    @Test
    void testGetDoc() throws Exception{
        GetRequest getRequest = new GetRequest("test04");
        getRequest.id("1");
        GetResponse documentFields = client.get(getRequest, RequestOptions.DEFAULT);
        System.out.println(documentFields.getSourceAsMap());
    }

運(yùn)行結(jié)果:

Springboot整合Elasticsearch(Es)

3.2.3 判斷文檔是否存在

//判斷文檔是否存在
    @Test
    void testExistsDoc() throws Exception{
        GetRequest getRequest = new GetRequest("test04");
        getRequest.id("1");
        boolean exists = client.exists(getRequest, RequestOptions.DEFAULT);
        System.out.println(exists);
    }

運(yùn)行結(jié)果:存在返回true,不存在返回false.

3.2.4 刪除文檔

//刪除文檔
    @Test
    void testDeleteDoc() throws Exception{
        DeleteRequest deleteRequest = new DeleteRequest("test04");
        deleteRequest.id("1");
        DeleteResponse delete = client.delete(deleteRequest, RequestOptions.DEFAULT);
        System.out.println(delete.getResult());
    }

運(yùn)行結(jié)果:刪除成功返回 DELETED

3.2.5 修改文檔

//修改文檔
    @Test
    void testUpdateDoc() throws Exception{
        UpdateRequest updateRequest = new UpdateRequest("test04","1");
        User user = new User();
        user.setName("王五");
        updateRequest.doc(JSON.toJSONString(user),XContentType.JSON);
        UpdateResponse update = client.update(updateRequest, RequestOptions.DEFAULT);
        System.out.println(update.getResult());
    }

運(yùn)行結(jié)果:修改成功返回 UPDATED

3.2.6 批量添加文檔

//批量添加文檔
    @Test
    void testBulk() throws Exception{
        BulkRequest bulkRequest = new BulkRequest("test04");
        List<User> list = new ArrayList<>();
        list.add(new User("1","張三1","北京1",18));
        list.add(new User("2","張三2","北京2",19));
        list.add(new User("3","張三3","北京3",20));
        list.add(new User("4","張三4","北京4",21));
        list.add(new User("5","張三5","北京5",22));
        list.stream().forEach(item->bulkRequest.add(new IndexRequest().id(item.getId()).source(JSON.toJSONString(item),XContentType.JSON)));
        BulkResponse bulk = client.bulk(bulkRequest, RequestOptions.DEFAULT);
        System.out.println(bulk.hasFailures());
    }

運(yùn)行結(jié)果:???? bulk.hasFailures():判斷是否有故障,返回false代表沒有故障,添加成功

3.3 復(fù)雜查詢

復(fù)雜查詢中包含一個(gè)條件對(duì)象,條件對(duì)象里包含了很多條件,比如 分頁,高亮,排序,查詢指定列,精準(zhǔn)匹配,范圍查詢等等

 //復(fù)雜查詢
    @Test
    void testSearch() throws Exception{
        SearchRequest searchRequest = new SearchRequest("test04");
        //創(chuàng)建條件對(duì)象
        SearchSourceBuilder builder = new SearchSourceBuilder();
        //bool
        BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery().should(QueryBuilders.matchQuery("name", "3"))
                .should(QueryBuilders.matchQuery("age", 20));
        builder.query(boolQueryBuilder);
        //分頁
        builder.from(0);
        builder.size(2);
        //指定列
        String[] includes = {"name","address"};
        String[] excludes = {"id"};
        builder.fetchSource(includes,null);
        //高亮
        HighlightBuilder highlightBuilder = new HighlightBuilder();
        highlightBuilder.field("name");
        highlightBuilder.preTags("<font>");
        highlightBuilder.postTags("</font>");
        builder.highlighter(highlightBuilder);
        //排序
        builder.sort("age", SortOrder.ASC);
        searchRequest.source(builder);
        SearchResponse search = client.search(searchRequest, RequestOptions.DEFAULT);
        SearchHit[] hits = search.getHits().getHits();
        Arrays.stream(hits).forEach(item-> System.out.println(item.getSourceAsMap()));
        Arrays.stream(hits).forEach(item-> System.out.println(item.getHighlightFields()));
    }

運(yùn)行結(jié)果:

Springboot整合Elasticsearch(Es)文章來源地址http://www.zghlxwxcb.cn/news/detail-421583.html

到了這里,關(guān)于Springboot整合Elasticsearch(Es)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【Elasticsearch】SpringBoot整合ES實(shí)現(xiàn)搜索功能 | 高亮顯示

    【Elasticsearch】SpringBoot整合ES實(shí)現(xiàn)搜索功能 | 高亮顯示

    先看代碼: controller: serviceImpl: 小結(jié) : 1、添加ES場(chǎng)景啟動(dòng)器 2、yaml配置ES 3、準(zhǔn)備需要用到的變量 注:還有一個(gè)注入的RestHighLevelClient 結(jié)構(gòu)如下: 具體調(diào)用的方法以及設(shè)置頁碼等參看代碼。 加斷點(diǎn)查看對(duì)應(yīng)searchResponse數(shù)據(jù)結(jié)構(gòu): HighlightFields的數(shù)據(jù)結(jié)構(gòu): 對(duì)照kinaba結(jié)果: 3、根

    2024年02月11日
    瀏覽(25)
  • ElasticSearch序列 - SpringBoot整合ES:范圍查詢 range

    01. ElasticSearch range查詢是什么? Elasticsearch 中的 range 查詢可以用于查詢某個(gè)字段在一定范圍內(nèi)的文檔。 range 查詢可同時(shí)提供包含和不包含這兩種范圍表達(dá)式,可供組合的選項(xiàng)如下: gt : 大于(greater than) lt : 小于(less than) gte : = 大于或等于(greater than or equal to) lte : = 小于

    2024年02月09日
    瀏覽(27)
  • Springboot 整合 Elasticsearch(五):使用RestHighLevelClient操作ES ②

    Springboot 整合 Elasticsearch(五):使用RestHighLevelClient操作ES ②

    ?? 前情提要: Springboot 整合 Elasticsearch(三):使用RestHighLevelClient操作ES ① 目錄 ?一、Springboot 整合 Elasticsearch 1、RestHighLevelClient API介紹 1.1、全查詢 分頁 排序 1.2、單條件查詢 1.2.1、termQuery 1.2.2、matchQuery 1.2.3、短語檢索 1.3、組合查詢 1.4、范圍查詢 1.5、模糊查詢 1.6、分組

    2024年04月11日
    瀏覽(28)
  • ElasticSearch系列 - SpringBoot整合ES:多個(gè)精確值查詢 terms

    ElasticSearch - SpringBoot整合ES:多個(gè)精確值查詢 terms 01. ElasticSearch terms 查詢支持的數(shù)據(jù)類型 在Elasticsearch中,terms查詢支持多種數(shù)據(jù)類型,包括: 字符串類型:可以將多個(gè)字符串值作為數(shù)組傳遞給terms查詢,以匹配包含任何一個(gè)指定字符串值的文檔。 數(shù)值類型:可以將多個(gè)數(shù)值作

    2024年02月16日
    瀏覽(27)
  • ElasticSearch序列 - SpringBoot整合ES:根據(jù)指定的 ids 查詢

    1. ElasticSearch 根據(jù) ids 查詢文檔 ① 索引文檔,構(gòu)造數(shù)據(jù) ② 查詢文檔 id 為 1 或者 2 的文檔: 我們索引文檔時(shí),文檔的id為整型,為什么查詢出來的文檔 id為字符串類型呢?如果我們使用字符串類型的文檔id查詢呢? 可以看到仍然可以查詢到匹配的文檔。 在Elasticsearch中,文檔

    2024年02月11日
    瀏覽(23)
  • ElasticSearch系列 - SpringBoot整合ES之全文搜索匹配查詢 match

    官方文檔地址:https://www.elastic.co/guide/en/elasticsearch/reference/index.html 權(quán)威指南:https://www.elastic.co/guide/cn/elasticsearch/guide/current/structured-search.html 1. 數(shù)據(jù)準(zhǔn)備 官方測(cè)試數(shù)據(jù)下載地址:https://download.elastic.co/demos/kibana/gettingstarted/accounts.zip ,數(shù)據(jù)量很大,我們自己構(gòu)造數(shù)據(jù)吧。 2. m

    2023年04月08日
    瀏覽(32)
  • ElasticSearch系列 - SpringBoot整合ES:組合多個(gè)查詢條件 bool 查詢

    01. ElasticSearch 布爾查詢是什么? 在實(shí)際應(yīng)用中,我們很有可能會(huì)查詢多個(gè)值或字段。 一個(gè) bool 查詢由三部分組成: must:所有的語句都必須(must) 匹配,與 AND 等價(jià)。 must_not:所有的語句都不能(must not)匹配,與 NOT 等價(jià)。 should:至少有一個(gè)語句要匹配,與 OR 等價(jià)。 02.

    2023年04月08日
    瀏覽(27)
  • ElasticSearch系列 - SpringBoot整合ES:實(shí)現(xiàn)搜索結(jié)果排序 sort

    00. 數(shù)據(jù)準(zhǔn)備 01. Elasticsearch 默認(rèn)的排序方式是什么? ElasticSearch 默認(rèn)的排序方式是相關(guān)性排序。相關(guān)性排序是根據(jù)查詢條件與文檔的匹配程度來計(jì)算每個(gè)文檔的相關(guān)性得分,然后按照得分從高到低進(jìn)行排序。相關(guān)性排序是 ElasticSearch 中最常用的排序方式,因?yàn)樗梢愿鶕?jù)查詢

    2024年02月02日
    瀏覽(22)
  • ElasticSearch系列 - SpringBoot整合ES:多字段查詢 multi_match

    1. 什么是 ElasticSearch 的 multi_match 查詢? 有時(shí)用戶需要在多個(gè)字段中查詢,除了使用布爾查詢封裝多個(gè)match查詢之外,可替代的方案是使用multi_match??梢栽趍ulti_match的query子句中組織數(shù)據(jù)匹配規(guī)則,并在fields子句中指定需要搜索的字段列表。 以下是一個(gè)示例multi-match查詢

    2023年04月21日
    瀏覽(23)
  • ElasticSearch系列 - SpringBoot整合ES:短語匹配查詢 match_phrase

    1. ElasticSearch match_phrase查詢是什么?它與match查詢有什么區(qū)別? match_phrase查詢是一種用于匹配短語的查詢方式,可以用于精確匹配多個(gè)單詞組成的短語。它會(huì)將查詢字符串分解成單詞,然后按照順序匹配文檔中的單詞,只有當(dāng)文檔中的單詞順序與查詢字符串中的單詞順序完全

    2024年02月12日
    瀏覽(18)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包