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

springboot與es集成操作-基礎(chǔ)篇

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

1.添加依賴

<!--elasticsearch依賴-->
 <dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
 </dependency>

2.yml中增加es配置

spring
  elasticsearch:
    rest:
      uris: http://127.0.0.1:9200
 

3.索引實(shí)體類

@Data
@FieldNameConstants
@AllArgsConstructor
@NoArgsConstructor
@Document(indexName = "index_search")
public class IndexSearch {
    @Id
    private long id;

    @ApiModelProperty(value = "名稱")
    @Field(type = FieldType.Text, analyzer = "ik_max_word", searchAnalyzer = "ik_smart")
    private String name;

    @ApiModelProperty(value = "別名")
    @Field(type = FieldType.Text, analyzer = "ik_max_word", searchAnalyzer = "ik_smart")
    private String displayName;

    @ApiModelProperty(value = "分類 1類型 2物質(zhì) 3省 4市")
    @Field(type = FieldType.Integer)
    private Integer category;

    @ApiModelProperty(value = "時(shí)間")
    @Field(type = FieldType.Date, format = DateFormat.basic_date, pattern = "yyyy-MM-dd")
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date controlTime;

    @ApiModelProperty(value = "包含隸屬")
    @Field(type = FieldType.Text, analyzer = "ik_max_word", searchAnalyzer = "ik_smart")
    private String contain;

    @ApiModelProperty(value = "主要省")
    @Field(type = FieldType.Text, analyzer = "ik_max_word", searchAnalyzer = "ik_smart")
    private String mainProvince;

    @ApiModelProperty(value = "次要省")
    @Field(type = FieldType.Text, analyzer = "ik_max_word", searchAnalyzer = "ik_smart")
    private String secondaryProvince;

    @ApiModelProperty(value = "主要市")
    @Field(type = FieldType.Text, analyzer = "ik_max_word", searchAnalyzer = "ik_smart")
    private String mainCity;

    @ApiModelProperty(value = "次要市")
    @Field(type = FieldType.Text, analyzer = "ik_max_word", searchAnalyzer = "ik_smart")
    private String secondaryCity;

    @ApiModelProperty(value = "其他省")
    @Field(type = FieldType.Text, analyzer = "ik_max_word", searchAnalyzer = "ik_smart")
    private String otherProvince;

    @ApiModelProperty(value = "其他市")
    @Field(type = FieldType.Text, analyzer = "ik_max_word", searchAnalyzer = "ik_smart")
    private String otherCity;

    /*
    定義關(guān)鍵詞索引 要完成補(bǔ)全搜索,必須要用到特殊的數(shù)據(jù)類型completion,
    要漢字拼音都能補(bǔ)全,必須要使用自定義的ik+pinyin分詞器
    maxInputLength:設(shè)置單個(gè)輸入的長(zhǎng)度,默認(rèn)為50 UTF-16 代碼點(diǎn)*/
    @CompletionField(analyzer = "ik_max_word", searchAnalyzer = "keyword", maxInputLength = 100)
    private Completion completion;

}

4.實(shí)現(xiàn)Repository

public interface IndexSearchRepository  extends ElasticsearchRepository<IndexSearch, Long> {

    @Highlight(
            fields = {
                    @HighlightField(name = "name"),
                    @HighlightField(name = "displayName"),
            },
            parameters = @HighlightParameters(preTags = "<strong>",
            postTags = "</strong>", fragmentSize = 500,numberOfFragments= 3))
    SearchPage<IndexSearch> findByNameOrDisplayName(String name,String displayName, Pageable pageable);
}

5.控制器具體實(shí)現(xiàn)

分頁(yè)查詢,高亮查詢

     @Autowired
    private SubstanceSearchRepository repository;
  //使用es API進(jìn)行分頁(yè)高亮查詢
    @GetMapping("/listSearch")
    public RestResult<ListPageResult<IndexSearch>> getPageData(@RequestParam String name,
                                                                   @RequestParam(defaultValue = "0") Integer pageNumber,
                                                                   @RequestParam(defaultValue = "10") Integer pageSize) {
        SearchPage<SubstanceSearch> pageData = repository.findByNameOrDisplayName(name, name,PageRequest.of(pageNumber, pageSize));
        try {
            // 得到查詢結(jié)果返回的內(nèi)容
            List<SearchHit<IndexSearch>> searchHits = pageData.getContent();
            // 設(shè)置一個(gè)需要返回的實(shí)體類集合
            List<IndexSearch> discussPosts = new ArrayList<>();
            // 遍歷返回的內(nèi)容進(jìn)行處理
            for (SearchHit<IndexSearch> searchHit : searchHits) {
                // 高亮的內(nèi)容
                Map<String, List<String>> highLightFields = searchHit.getHighlightFields();
                // 將高亮的內(nèi)容填充到content中
                searchHit.getContent().setName(highLightFields.get("name") == null ? searchHit.getContent().getName() : highLightFields.get("name").get(0));
                searchHit.getContent().setDisplayName(highLightFields.get("displayName") == null ? searchHit.getContent().getDisplayName() : highLightFields.get("displayName").get(0));

                // 放到實(shí)體類中
                discussPosts.add(searchHit.getContent());
            }
            return RestResultHelper.success(new ListPageResult<IndexSearch>(pageData.getSize(), pageData.getNumber(), pageData.getTotalPages(), pageData.getTotalElements(), discussPosts));
        } catch (Exception e) {
            e.printStackTrace();
            return RestResultHelper.error();
        }
    }

自動(dòng)補(bǔ)全

    @Autowired
    private ElasticsearchRestTemplate restTemplate;
 /**
     * 自動(dòng)補(bǔ)全方法
     **/
    @GetMapping("/suggest")
    public RestResult<List<String>> suggest(String prefix) {
        List<String> results = new ArrayList<>();
        CompletionSuggestionBuilder completionSuggestionBuilder = new CompletionSuggestionBuilder(IndexSearch.Fields.completion)
                .prefix(prefix)
                .skipDuplicates(true).size(10);
        SuggestBuilder suggestBuilder = new SuggestBuilder()
                .addSuggestion("name_suggest", completionSuggestionBuilder);

        SearchResponse response = restTemplate.suggest(suggestBuilder, IndexCoordinates.of("index_search"));
        Suggest suggest = response.getSuggest();
        Suggest.Suggestion suggestion = suggest.getSuggestion("name_suggest");
        List<CompletionSuggestion.Entry> entries = suggestion.getEntries();
        entries.forEach(entry -> {
            List<CompletionSuggestion.Entry.Option> options = entry.getOptions();
            options.forEach(option -> {
                results.add(option.getText().toString());
            });
        });
        return RestResultHelper.success(results);
    }

添加文檔數(shù)據(jù)

  //添加數(shù)據(jù)
       @Autowired
    private SubstanceSearchRepository repository;
    
    @GetMapping("/insert")
    public void addData() throws Exception {
        List<IndexSearch> orderDocs = new ArrayList<>();

        for (int i = 0; i < 15; i++) {
            String title = "類型";
            suggestList = new ArrayList<>();
            title += i;
            suggestList.add(title); //可以把多個(gè)內(nèi)容作為suggest的數(shù)據(jù)源
            suggestList.add("別名" + i);
            Completion suggest = new Completion(suggestList.toArray(new String[suggestList.size()]));
            IndexSearch orderDoc = new IndexSearch(i, title, title, 1, new Date(), "隸屬", "主要省", "次要省", "主要市", "次要市",  "其他省", "其他市",suggest);
            orderDocs.add(orderDoc);
        }
        repository.saveAll(orderDocs);
    }

springboot集成es,Java,elasticsearch,spring boot,java文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-552279.html

到了這里,關(guān)于springboot與es集成操作-基礎(chǔ)篇的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(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學(xué)習(xí)筆記五】es常用的JAVA API、es整合SpringBoot項(xiàng)目中使用、利用JAVA代碼操作es、RestHighLevelClient客戶端對(duì)象

    目錄 一、Maven項(xiàng)目集成Easticsearch 1)客戶端對(duì)象 2)索引操作 3)文檔操作 4)高級(jí)查詢 二、springboot項(xiàng)目集成Spring Data操作Elasticsearch 1)pom文件 2)yaml 3)數(shù)據(jù)實(shí)體類 4)配置類 5)Dao數(shù)據(jù)訪問(wèn)對(duì)象 6)索引操作 7)文檔操作 8)文檔搜索 三、springboot項(xiàng)目集成bboss操作elasticsearch

    2023年04月09日
    瀏覽(37)
  • Java SpringBoot API 實(shí)現(xiàn)ES(Elasticsearch)搜索引擎的一系列操作(超詳細(xì))(模擬數(shù)據(jù)庫(kù)操作)

    Java SpringBoot API 實(shí)現(xiàn)ES(Elasticsearch)搜索引擎的一系列操作(超詳細(xì))(模擬數(shù)據(jù)庫(kù)操作)

    小編使用的是elasticsearch-7.3.2 基礎(chǔ)說(shuō)明: 啟動(dòng):進(jìn)入elasticsearch-7.3.2/bin目錄,雙擊elasticsearch.bat進(jìn)行啟動(dòng),當(dāng)出現(xiàn)一下界面說(shuō)明,啟動(dòng)成功。也可以訪問(wèn)http://localhost:9200/ 啟動(dòng)ES管理:進(jìn)入elasticsearch-head-master文件夾,然后進(jìn)入cmd命令界面,輸入npm?run?start?即可啟動(dòng)。訪問(wèn)http

    2024年02月04日
    瀏覽(34)
  • elasticSearch集群 springboot集成es 完全解析

    elasticSearch集群 springboot集成es 完全解析

    #編寫compose.yml配置文件 #每個(gè)節(jié)點(diǎn)都創(chuàng)建一個(gè)elasticsearch.yml文件 用到的命令: systemctl start docker docker-compose up es和kibana版本必須一樣 environment:配置容器內(nèi)的環(huán)境變量 networks:創(chuàng)建一個(gè)名為elastic的局域網(wǎng),讓各節(jié)點(diǎn)以及kibana,es-head相互聯(lián)系 network.host: 0.0.0.0:意為監(jiān)聽一切地址,可

    2024年02月03日
    瀏覽(25)
  • ElasticSearch | SpringBoot集成ES異常以及處理方法

    ElasticSearch | SpringBoot集成ES異常以及處理方法

    異常 Elasticsearch exception Elasticsearch exception [type=cluster_block_exception, reason=index [video_struct_vehicle] blocked by: [FORBIDDEN/12/index read-only / allow delete (api)]; 產(chǎn)生原因 服務(wù)磁盤內(nèi)存不足,導(dǎo)致無(wú)法刪除,所有索引都變成了只讀 read-only狀態(tài)。 一旦在存儲(chǔ)超過(guò)95%的磁盤中的節(jié)點(diǎn)上分配了一個(gè)

    2024年02月13日
    瀏覽(20)
  • spring boot +springboot集成es7.9.1+canal同步到es

    spring boot +springboot集成es7.9.1+canal同步到es

    未經(jīng)許可,請(qǐng)勿轉(zhuǎn)載。 其實(shí)大部分的代碼是來(lái)源于 參考資料來(lái)源 的 主要代碼實(shí)現(xiàn) ,我只是在他的基礎(chǔ)上增加自定義注解,自定義分詞器等。需要看詳細(xì)源碼的可以去看 主要代碼實(shí)現(xiàn) ,結(jié)合我的來(lái)使用。 有人會(huì)問(wèn)為什么需要自定義注解,因?yàn)閑lasticsearch7.6 索引將去除type 沒(méi)

    2023年04月11日
    瀏覽(18)
  • es Elasticsearch 六 java api spirngboot 集成es

    es Elasticsearch 六 java api spirngboot 集成es

    目錄 Java restApi Springboot 集成es 新增-同步 新增-異步 增刪改查流程 _bulk 批量操作 新增-同步 新增-異步 增刪改查流程 創(chuàng)建請(qǐng)求、2.執(zhí)行、3.查看返回結(jié)果 ? ? _bulk 批量操作 ok 持續(xù)更新

    2024年02月10日
    瀏覽(26)
  • spring boot集成Elasticsearch-SpringBoot(25)

    spring boot集成Elasticsearch-SpringBoot(25)

    ??搜索引擎(search engine )通常意義上是指:根據(jù)特定策略,運(yùn)用特定的爬蟲程序從互聯(lián)網(wǎng)上搜集信息,然后對(duì)信息進(jìn)行處理后,為用戶提供檢索服務(wù),將檢索到的相關(guān)信息展示給用戶的系統(tǒng)。 ??而我們講解的是捜索的索引和檢索,不涉及爬蟲程序的內(nèi)容爬取。大部分公司

    2023年04月09日
    瀏覽(24)
  • 項(xiàng)目中使用es(一):使用springboot操作elasticsearch

    項(xiàng)目中使用es(一):使用springboot操作elasticsearch

    寫在前面 對(duì)于elasticsearch的搭建,前面寫了一篇文章有簡(jiǎn)單描述如何搭建es,本次主要介紹如何在項(xiàng)目里使用,主要使用ElasticsearchRepository和ElasticsearchRestTemplate操作es。 搭建項(xiàng)目環(huán)境和選擇合適版本 首先選擇合適的項(xiàng)目組件版本,因?yàn)閑s版本和springboot版本有對(duì)應(yīng),如果不合適會(huì)

    2024年02月08日
    瀏覽(26)
  • springboot操作ES之ElasticSearch_EasyEs

    前置環(huán)境 es:7.x springboot:2.6.0 easyes:1.0.2 1.導(dǎo)入依賴 2.配置文件 3.新建實(shí)體類 Document Comment User 4.啟動(dòng)類上面加EsMapperScan 5.最后測(cè)試各種操作

    2024年02月12日
    瀏覽(23)
  • 【SpringBoot筆記28】SpringBoot集成ES數(shù)據(jù)庫(kù)之操作doc文檔(創(chuàng)建、更新、刪除、查詢)

    這篇文章,主要介紹SpringBoot集成ES數(shù)據(jù)庫(kù)之操作doc文檔(創(chuàng)建、更新、刪除、查詢)。 目錄 一、SpringBoot操作ES文檔數(shù)據(jù) 1.1、創(chuàng)建文檔 1.2、更新文檔 1.3、刪除文檔

    2024年02月08日
    瀏覽(35)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包