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

【ElasticSearch】ES案例:旅游酒店搜索

這篇具有很好參考價值的文章主要介紹了【ElasticSearch】ES案例:旅游酒店搜索。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

一、項目分析

啟動hotel-demo項目,訪問localhost:servicePort,即可訪問static下的index.html:

【ElasticSearch】ES案例:旅游酒店搜索,ElasticSearch,SpringCloud,elasticsearch,旅游,大數(shù)據(jù)

從頁面分析,我們需要實現(xiàn)搜索、分頁、排序等功能。點擊頁面,可以看到list接口的傳參為:

【ElasticSearch】ES案例:旅游酒店搜索,ElasticSearch,SpringCloud,elasticsearch,旅游,大數(shù)據(jù)

二、需求1:酒店搜索功能

接下來實現(xiàn)酒店搜索功能,完成關鍵字搜索和分頁。

  • 定義接參的Dto類
@Data
public class RequestParam {

    private String key;

    private Integer page;  //pageNum

    private Integer size;  //pageSize

    private String sortBy;
}


  • 定義返回的結果類
@AllArgsConstructor
@NoArgsConstructor
@Data
public class PageResult {

    private Long total;

    private List<HotelDoc>  hotelDocList;
}
  • 定義controller接口,接收頁面請求
@RestController
@RequestMapping("/hotel")
public class HotelSearchController {

    @Resource
    IHotelService hotelService;

    @PostMapping("/list")
    public PageResult searchHotel(@RequestBody RequestParam requestParam){
        return hotelService.search(requestParam);
    }

}
  • Service層要用到JavaRestHighLevelClient對象,在啟動類中定義這個Bean
@SpringBootApplication
public class HotelDemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(HotelDemoApplication.class, args);
    }

    @Bean
    public RestHighLevelClient client(){
        return new RestHighLevelClient(RestClient.builder(
                HttpHost.create("http://10.4.130.220:9200")
        ));
    }

}
  • 完成Service層,利用match查詢實現(xiàn)根據(jù)關鍵字搜索酒店信息
public interface IHotelService extends IService<Hotel> {
    PageResult search(RequestParam requestParam);
}
@Service
public class HotelService extends ServiceImpl<HotelMapper, Hotel> implements IHotelService {

    @Resource
    RestHighLevelClient client;  //注入客戶端操作的bean

    @Override
    public PageResult search(RequestParam requestParam) {
        try {
            SearchRequest request = new SearchRequest("hotel");
            //搜索關鍵字
            String key = requestParam.getKey();
            if (StringUtils.isNotEmpty(key)) {   //有key就走全文檢索
                request.source().query(QueryBuilders.matchQuery("all", key));
            } else {   //沒key就走查所有
                request.source().query(QueryBuilders.matchAllQuery());
            }
            //分頁
            request.source().from((requestParam.getPage() - 1) * requestParam.getSize())    //(pageNum-1)*pageSize
                    .size(requestParam.getSize());
                    //發(fā)送請求
            SearchResponse response = client.search(request, RequestOptions.DEFAULT);
            //處理響應結果
            return handleResponse(response);
        } catch (IOException e) {
            throw new RuntimeException();
        }

    }
	
	//處理響應結果的方法
    private PageResult handleResponse(SearchResponse response) {
        SearchHits searchHits = response.getHits();
        long total = searchHits.getTotalHits().value;
        SearchHit[] hits = searchHits.getHits();
        //Stream流將hits中的每條數(shù)據(jù)都轉為HotelDoc對象
        List<HotelDoc> hotelDocList = Arrays.stream(hits).map(t -> {
            String json = t.getSourceAsString();
            HotelDoc hotelDoc = JSON.parseObject(json, HotelDoc.class);
            return hotelDoc;
        }).collect(Collectors.toList());
        return new PageResult(total, hotelDocList);
    }
}

重啟服務,搜索和分頁已實現(xiàn)。

【ElasticSearch】ES案例:旅游酒店搜索,ElasticSearch,SpringCloud,elasticsearch,旅游,大數(shù)據(jù)

三、需求2:添加過濾功能

接下來添加品牌、城市、星級、價格的過濾功能。這里參與搜索的條件對應著不同的搜索類型,有全文檢索,有精確查找,自然要用復合查詢Boolean Search

【ElasticSearch】ES案例:旅游酒店搜索,ElasticSearch,SpringCloud,elasticsearch,旅游,大數(shù)據(jù)

  • 修改接參dto類:
@Data
public class RequestParam {

    private String key;

    private Integer page;  //pageNum

    private Integer size;  //pageSize

    private String sortBy;

	private String brand;  
	  
	private String starName; 
	   
	private String city;    
	
	private Integer minPrice;    
	
	private Integer maxPrice;

}
  • 修改Service層實現(xiàn),這里把搜索條件的構建單獨抽取成方法,一來方便后面復用,二來讓代碼看著清爽點
@Service
public class HotelService extends ServiceImpl<HotelMapper, Hotel> implements IHotelService {

    @Resource
    RestHighLevelClient client;

    @Override
    public PageResult search(RequestParam requestParam) {
        try {
            //準備request
            SearchRequest request = new SearchRequest("hotel");
            //構建查詢條件
            buildBasicQuery(requestParam, request);
            //分頁
            request.source().from((requestParam.getPage() - 1) * requestParam.getSize())
                    .size(requestParam.getSize());
            //發(fā)送請求
            SearchResponse response = client.search(request, RequestOptions.DEFAULT);
            //處理響應結果
            return handleResponse(response);
        } catch (IOException e) {
            throw new RuntimeException();
        }

    }

    private void buildBasicQuery(RequestParam requestParam, SearchRequest request) {
        BoolQueryBuilder booleanQuery = QueryBuilders.boolQuery();
        //關鍵字
        String key = requestParam.getKey();
        if (! isEmpty(key)) {
            booleanQuery.must(QueryBuilders.matchQuery("all", key));
        } else {
            booleanQuery.must(QueryBuilders.matchAllQuery());
        }
        //城市
        if (! isEmpty(requestParam.getCity())) {
            booleanQuery.filter(QueryBuilders.termQuery("city", requestParam.getCity()));
        }
        //品牌
        if (! isEmpty(requestParam.getBrand())) {
            booleanQuery.filter(QueryBuilders.termQuery("brand", requestParam.getBrand()));
        }
        //星級
        if (! isEmpty(requestParam.getStarName())) {
            booleanQuery.filter(QueryBuilders.termQuery("startName", requestParam.getStarName()));
        }
        //價格
        if (requestParam.getMaxPrice() != null && requestParam.getMinPrice() != null) {
            booleanQuery.filter(QueryBuilders.rangeQuery("price")
                    .lte(requestParam.getMaxPrice())
                    .gte(requestParam.getMinPrice()));
        }
        request.source().query(booleanQuery);


    }

    private static boolean isEmpty(String str){
        return str == null || "".equals(str);
    }
}

【ElasticSearch】ES案例:旅游酒店搜索,ElasticSearch,SpringCloud,elasticsearch,旅游,大數(shù)據(jù)

四、需求3:我附近的酒店

前端頁面點擊定位后,會將你所在的位置發(fā)送到后臺:
【ElasticSearch】ES案例:旅游酒店搜索,ElasticSearch,SpringCloud,elasticsearch,旅游,大數(shù)據(jù)
接下來實現(xiàn)根據(jù)這個坐標,將酒店結果按照到這個點的距離升序排序。
【ElasticSearch】ES案例:旅游酒店搜索,ElasticSearch,SpringCloud,elasticsearch,旅游,大數(shù)據(jù)

距離排序與普通字段排序有所差異,對比如下:

【ElasticSearch】ES案例:旅游酒店搜索,ElasticSearch,SpringCloud,elasticsearch,旅游,大數(shù)據(jù)

開始實現(xiàn)需求:

  • 修改RequestParams參數(shù),接收location字段
@Data
public class RequestParam {

    private String key;

    private Integer page;  //pageNum

    private Integer size;  //pageSize

    private String sortBy;

	private String brand;  
	  
	private String starName; 
	   
	private String city;    
	
	private Integer minPrice;    
	
	private Integer maxPrice;

	private String location;  //經(jīng)緯度位置
}
  • 修改Service中,在分頁前加排序邏輯
@Override
public PageResult search(RequestParam requestParam) {
    try {
        //準備request
        SearchRequest request = new SearchRequest("hotel");
        //構建查詢條件
        buildBasicQuery(requestParam, request);
        //排序
        String myLocation = requestParam.getLocation();
        if(! isEmpty(myLocation)){
            request.source().sort(SortBuilders
                    .geoDistanceSort("location",new GeoPoint(myLocation))
                    .order(SortOrder.ASC)
                    .unit(DistanceUnit.KILOMETERS));
        }
        //分頁
        request.source().from((requestParam.getPage() - 1) * requestParam.getSize())
                .size(requestParam.getSize());
        //發(fā)送請求
        SearchResponse response = client.search(request, RequestOptions.DEFAULT);
        //處理響應結果
        return handleResponse(response);
    } catch (IOException e) {
        throw new RuntimeException();
    }

}

但此時發(fā)現(xiàn)返回結果中少了距離你xxx千米的信息:

【ElasticSearch】ES案例:旅游酒店搜索,ElasticSearch,SpringCloud,elasticsearch,旅游,大數(shù)據(jù)

查看DSL返回結果,看到距離是在sort字段中:

【ElasticSearch】ES案例:旅游酒店搜索,ElasticSearch,SpringCloud,elasticsearch,旅游,大數(shù)據(jù)

因此需要修改結果處理的方法,且最后pageResult中是HotelDoc對象的集合,因此,修改Hoteldoc類,加distance距離字段:

@Data
@NoArgsConstructor
public class HotelDoc {
    private Long id;
    private String name;
    private String address;
    private Integer price;
    private Integer score;
    private String brand;
    private String city;
    private String starName;
    private String business;
    private String location;
    private String pic;
    //距離
    private Object distance;   //新加字段

    public HotelDoc(Hotel hotel) {
        this.id = hotel.getId();
        this.name = hotel.getName();
        this.address = hotel.getAddress();
        this.price = hotel.getPrice();
        this.score = hotel.getScore();
        this.brand = hotel.getBrand();
        this.city = hotel.getCity();
        this.starName = hotel.getStarName();
        this.business = hotel.getBusiness();
        this.location = hotel.getLatitude() + ", " + hotel.getLongitude();
        this.pic = hotel.getPic();
    }
}
private PageResult handleResponse(SearchResponse response) {
    SearchHits searchHits = response.getHits();
    long total = searchHits.getTotalHits().value;
    SearchHit[] hits = searchHits.getHits();
    List<HotelDoc> hotelDocList = Arrays.stream(hits).map(t -> {
        String json = t.getSourceAsString();
        HotelDoc hotelDoc = JSON.parseObject(json, HotelDoc.class);
        //開始加入距離
        Object[] sortValues = t.getSortValues();   //排序字段可能不止一個
        if(sortValues.length > 0 ){
            Object sortValue = sortValues[0];
            hotelDoc.setDistance(sortValue); 拿到sort值賦值給距離
        }
        return hotelDoc;
    }).collect(Collectors.toList());
    return new PageResult(total, hotelDocList);
}

到此,需求實現(xiàn):

【ElasticSearch】ES案例:旅游酒店搜索,ElasticSearch,SpringCloud,elasticsearch,旅游,大數(shù)據(jù)

五、需求4:置頂花廣告費的酒店

實現(xiàn)讓指定的酒店在搜索結果中排名置頂:

【ElasticSearch】ES案例:旅游酒店搜索,ElasticSearch,SpringCloud,elasticsearch,旅游,大數(shù)據(jù)
實現(xiàn)思路為:

  • HotelDoc類添加標記字段isAD,Boolean類型
  • 對于出廣告費的酒店,isAD為true,前端可用這個字段給酒店打廣告標簽
  • 使用function score給花錢的酒店人為增加權重,干涉排序

代碼實現(xiàn):

  • hotelDoc類:
@Data
@NoArgsConstructor
public class HotelDoc {
    private Long id;
    private String name;
    private String address;
    private Integer price;
    private Integer score;
    private String brand;
    private String city;
    private String starName;
    private String business;
    private String location;
    private String pic;
    //距離
    private Object distance;   //新加字段
	//是否有廣告費
	private Boolean isAD;
  • 更新ES數(shù)據(jù),模擬某酒店出廣告費

【ElasticSearch】ES案例:旅游酒店搜索,ElasticSearch,SpringCloud,elasticsearch,旅游,大數(shù)據(jù)

  • 加入function score算分認為控制,給isAD為true的加權
private void buildBasicQuery(RequestParam requestParam, SearchRequest request) {
    //BoolQuery原始查詢條件,原始算分
    BoolQueryBuilder booleanQuery = QueryBuilders.boolQuery();
    //關鍵字
    String key = requestParam.getKey();
    if (!isEmpty(key)) {
        booleanQuery.must(QueryBuilders.matchQuery("all", key));
    } else {
        booleanQuery.must(QueryBuilders.matchAllQuery());
    }
    //城市
    if (!isEmpty(requestParam.getCity())) {
        booleanQuery.filter(QueryBuilders.termQuery("city", requestParam.getCity()));
    }
    //品牌
    if (!isEmpty(requestParam.getBrand())) {
        booleanQuery.filter(QueryBuilders.termQuery("brand", requestParam.getBrand()));
    }
    //星級
    if (!isEmpty(requestParam.getStarName())) {
        booleanQuery.filter(QueryBuilders.termQuery("startName", requestParam.getStarName()));
    }
    //價格
    if (requestParam.getMaxPrice() != null && requestParam.getMinPrice() != null) {
        booleanQuery.filter(QueryBuilders.rangeQuery("price")
                .lte(requestParam.getMaxPrice())
                .gte(requestParam.getMinPrice()));
    }
    
    //function score算分控制
    FunctionScoreQueryBuilder functionScoreQuery = QueryBuilders.functionScoreQuery(
            booleanQuery,  //第一個參數(shù)傳入booleanQuery為原始查詢,對應原始的相關性算分
            new FunctionScoreQueryBuilder.FilterFunctionBuilder[]{  //第二個形參,function score數(shù)組,里面有個function score元素
                    new FunctionScoreQueryBuilder.FilterFunctionBuilder(  //function score元素對象,第一個參數(shù)傳入篩選字段
                            QueryBuilders.termQuery("isAD", true),   //不再用酒店品牌篩選,而是isAD字段
                            ScoreFunctionBuilders.weightFactorFunction(10)  //算分函數(shù),用默認的乘法,權重為10
                    )
            });
    request.source().query(functionScoreQuery);


}

實現(xiàn)效果;

【ElasticSearch】ES案例:旅游酒店搜索,ElasticSearch,SpringCloud,elasticsearch,旅游,大數(shù)據(jù)


Function Score查詢可以控制文檔的相關性算分,使用方式如下:

【ElasticSearch】ES案例:旅游酒店搜索,ElasticSearch,SpringCloud,elasticsearch,旅游,大數(shù)據(jù)

最后貼上以上四個需求Service層代碼:

import cn.itcast.hotel.domain.dto.RequestParam;
import cn.itcast.hotel.domain.pojo.HotelDoc;
import cn.itcast.hotel.domain.vo.PageResult;
import cn.itcast.hotel.mapper.HotelMapper;
import cn.itcast.hotel.domain.pojo.Hotel;
import cn.itcast.hotel.service.IHotelService;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;


import org.elasticsearch.action.search.SearchRequest;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.common.geo.GeoPoint;
import org.elasticsearch.common.unit.DistanceUnit;
import org.elasticsearch.index.query.BoolQueryBuilder;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.index.query.functionscore.FunctionScoreQueryBuilder;
import org.elasticsearch.index.query.functionscore.ScoreFunctionBuilders;
import org.elasticsearch.search.SearchHit;
import org.elasticsearch.search.SearchHits;
import org.elasticsearch.search.sort.SortBuilders;
import org.elasticsearch.search.sort.SortOrder;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.io.IOException;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

@Service
public class HotelService extends ServiceImpl<HotelMapper, Hotel> implements IHotelService {

    @Resource
    RestHighLevelClient client;

    @Override
    public PageResult search(RequestParam requestParam) {
        try {
            //準備request
            SearchRequest request = new SearchRequest("hotel");
            //構建查詢條件
            buildBasicQuery(requestParam, request);
            //排序
            String myLocation = requestParam.getLocation();
            if (!isEmpty(myLocation)) {
                request.source().sort(SortBuilders
                        .geoDistanceSort("location", new GeoPoint(myLocation))
                        .order(SortOrder.ASC)
                        .unit(DistanceUnit.KILOMETERS));
            }
            //分頁
            request.source().from((requestParam.getPage() - 1) * requestParam.getSize())
                    .size(requestParam.getSize());
            //發(fā)送請求
            SearchResponse response = client.search(request, RequestOptions.DEFAULT);
            //處理響應結果
            return handleResponse(response);
        } catch (IOException e) {
            throw new RuntimeException();
        }

    }

    private void buildBasicQuery(RequestParam requestParam, SearchRequest request) {
        //BoolQuery原始查詢條件,原始算分
        BoolQueryBuilder booleanQuery = QueryBuilders.boolQuery();
        //關鍵字
        String key = requestParam.getKey();
        if (!isEmpty(key)) {
            booleanQuery.must(QueryBuilders.matchQuery("all", key));
        } else {
            booleanQuery.must(QueryBuilders.matchAllQuery());
        }
        //城市
        if (!isEmpty(requestParam.getCity())) {
            booleanQuery.filter(QueryBuilders.termQuery("city", requestParam.getCity()));
        }
        //品牌
        if (!isEmpty(requestParam.getBrand())) {
            booleanQuery.filter(QueryBuilders.termQuery("brand", requestParam.getBrand()));
        }
        //星級
        if (!isEmpty(requestParam.getStarName())) {
            booleanQuery.filter(QueryBuilders.termQuery("startName", requestParam.getStarName()));
        }
        //價格
        if (requestParam.getMaxPrice() != null && requestParam.getMinPrice() != null) {
            booleanQuery.filter(QueryBuilders.rangeQuery("price")
                    .lte(requestParam.getMaxPrice())
                    .gte(requestParam.getMinPrice()));
        }

        //function score算分控制
        FunctionScoreQueryBuilder functionScoreQuery = QueryBuilders.functionScoreQuery(
                booleanQuery,  //第一個參數(shù)傳入booleanQuery為原始查詢,對應原始的相關性算分
                new FunctionScoreQueryBuilder.FilterFunctionBuilder[]{  //第二個形參,function score數(shù)組,里面有個function score元素
                        new FunctionScoreQueryBuilder.FilterFunctionBuilder(  //function score元素對象,第一個參數(shù)傳入篩選字段
                                QueryBuilders.termQuery("isAD", true),   //不再用酒店品牌篩選,而是isAD字段
                                ScoreFunctionBuilders.weightFactorFunction(10)  //算分函數(shù),用默認的乘法,權重為10
                        )
                });
        request.source().query(functionScoreQuery);


    }

    private PageResult handleResponse(SearchResponse response) {
        SearchHits searchHits = response.getHits();
        long total = searchHits.getTotalHits().value;
        SearchHit[] hits = searchHits.getHits();
        List<HotelDoc> hotelDocList = Arrays.stream(hits).map(t -> {
            String json = t.getSourceAsString();
            HotelDoc hotelDoc = JSON.parseObject(json, HotelDoc.class);
            //開始加入距離
            Object[] sortValues = t.getSortValues();
            if (sortValues.length > 0) {
                Object sortValue = sortValues[0];
                hotelDoc.setDistance(sortValue);
            }
            return hotelDoc;
        }).collect(Collectors.toList());
        return new PageResult(total, hotelDocList);
    }

    private static boolean isEmpty(String str) {
        return str == null || "".equals(str);
    }
}

最后,頁面上其他地方的需求實現(xiàn)思路:

排序:

【ElasticSearch】ES案例:旅游酒店搜索,ElasticSearch,SpringCloud,elasticsearch,旅游,大數(shù)據(jù)
前端會傳遞sortBy參數(shù),就是排序方式,后端需要判斷sortBy值是什么:

  • default:相關度算分排序,這個不用管,es的默認排序策略
  • score:根據(jù)酒店的score字段排序,也就是用戶評價,降序
  • price:根據(jù)酒店的price字段排序,就是價格,升序
高亮:

【ElasticSearch】ES案例:旅游酒店搜索,ElasticSearch,SpringCloud,elasticsearch,旅游,大數(shù)據(jù)文章來源地址http://www.zghlxwxcb.cn/news/detail-625478.html

request.source()
        .query(QueryBuilders.matchQuery("all",requestParam.getKey()))
        .highlighter(new HighlightBuilder().field("name")
                .requireFieldMatch(false)
                .preTags("<strong>")
                .postTags("</strong")
        );

到了這里,關于【ElasticSearch】ES案例:旅游酒店搜索的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關文章

  • elasticsearch(ES)分布式搜索引擎03——(RestClient查詢文檔,ES旅游案例實戰(zhàn))

    elasticsearch(ES)分布式搜索引擎03——(RestClient查詢文檔,ES旅游案例實戰(zhàn))

    文檔的查詢同樣適用昨天學習的 RestHighLevelClient對象,基本步驟包括: 1)準備Request對象 2)準備請求參數(shù) 3)發(fā)起請求 4)解析響應 我們以match_all查詢?yōu)槔?3.1.1.發(fā)起查詢請求 代碼解讀: 第一步,創(chuàng)建 SearchRequest 對象,指定索引庫名 第二步,利用 request.source() 構建DSL,DSL中可

    2024年02月07日
    瀏覽(26)
  • 黑馬旅游案例(包括搜索,分頁,廣告置頂)中使用 elasticsearch 7.17.9 Java API

    黑馬旅游案例(包括搜索,分頁,廣告置頂)中使用 elasticsearch 7.17.9 Java API

    引言 學習黑馬 SpringCloud 的 es 部分時發(fā)現(xiàn)老師用的是es的高級客戶端來操作es的,而高級客戶端已經(jīng)顯示棄用,上網(wǎng)搜索發(fā)現(xiàn)關于新的 Java client API 只有基礎的索引、文檔操作,沒有關于這種稍復雜案例的操作,于是自己琢磨整理了一份筆記,也為其他學習最新的 es 的小伙伴

    2024年02月11日
    瀏覽(27)
  • ES實戰(zhàn) | 黑馬旅游案例

    ES實戰(zhàn) | 黑馬旅游案例

    需求:根據(jù)文字搜索,也可以選擇標簽搜索 思路:用bool查詢,先根據(jù)查詢?nèi)?,再根?jù)標簽過濾。 需求:實現(xiàn)分頁排序 思路:分頁跟排序是單獨的功能,可以根據(jù)選項排好序再分頁 要求:點擊獲取位置后,根據(jù)距離顯示酒店,且要顯示距離 思路:先判斷有沒有點擊

    2023年04月09日
    瀏覽(32)
  • 【黑馬旅游案例記錄(結合ES)】

    【黑馬旅游案例記錄(結合ES)】

    下面,我們通過黑馬旅游的案例來實戰(zhàn)演練下之前學習的知識。 我們實現(xiàn)四部分功能: 酒店搜索和分頁 酒店結果過濾 我周邊的酒店 酒店競價排名 啟動我們提供的hotel-demo項目,其默認端口是8089,訪問http://localhost:8089,就能看到項目頁面了: 11.9.1.酒店搜索和分頁 案例需求

    2024年02月05日
    瀏覽(11)
  • 【Elasticsearch】黑馬旅游案例

    【Elasticsearch】黑馬旅游案例

    目錄 4.黑馬旅游案例 4.1.酒店搜索和分頁 4.1.1.需求分析 4.1.2.定義實體類 4.1.3.定義controller 4.1.4.實現(xiàn)搜索業(yè)務 4.2.酒店結果過濾 4.2.1.需求分析 4.2.2.修改實體類 4.2.3.修改搜索業(yè)務 4.3.我周邊的酒店 4.3.1.需求分析 4.3.2.修改實體類 4.3.3.距離排序API 4.3.4.添加距離排序 4.3.5.排序距離顯

    2024年02月16日
    瀏覽(19)
  • SpringCloud:初識ES(ElasticSearch)

    SpringCloud:初識ES(ElasticSearch)

    1.1.1. ElasticSearch 的作用 ElasticSearch 是一款非常強大的開源搜索引擎,具備非常多強大功能,可以幫助我們從海量數(shù)據(jù)中快速找到需要的內(nèi)容 例如: 在 GitHub 搜索代碼 在百度搜索答案 1.1.2. ELK 技術棧 ElasticSearch 結合 kibana 、 Logstash 、 Beats ,也就是 elastic stack ( ELK )。被廣泛

    2023年04月15日
    瀏覽(22)
  • 【Springcloud】分布式搜索elasticsearch

    【Springcloud】分布式搜索elasticsearch

    先看下翻譯: elasticsearch是一款非常強大的 開源搜索引擎 ,可以幫助我們 從海量數(shù)據(jù)中快速找到需要的內(nèi)容 以下是生活中ES的使用場景: 項目在運行的時候會產(chǎn)生海量的日志信息,而elasticsearch結合kibana、Logstash、Beats,也就是elastic stack( ELK ),即ELK技術棧。被廣泛應用在

    2024年02月08日
    瀏覽(39)
  • SpringCloud實用篇6——elasticsearch搜索功能

    SpringCloud實用篇6——elasticsearch搜索功能

    elasticsearch的查詢依然是基于JSON風格的DSL來實現(xiàn)的。 Elasticsearch提供了基于JSON的DSL(Domain Specific Language)來定義查詢。常見的查詢類型包括: 查詢所有 :查詢出所有數(shù)據(jù),一般測試用。例如: match_all 全文檢索(full text)查詢 :利用分詞器對用戶輸入內(nèi)容分詞,然后去倒排索

    2024年02月12日
    瀏覽(16)
  • ElasticSearch基礎1——索引和文檔。Kibana,RestClient操作索引和文檔+黑馬旅游ES庫導入

    ElasticSearch基礎1——索引和文檔。Kibana,RestClient操作索引和文檔+黑馬旅游ES庫導入

    導航: 【黑馬Java筆記+踩坑匯總】JavaSE+JavaWeb+SSM+SpringBoot+瑞吉外賣+SpringCloud/SpringCloudAlibaba+黑馬旅游+谷粒商城 黑馬旅游源碼:? https://wwmg.lanzouk.com/ikjTE135ybje 目錄 1.初識彈性搜索elasticsearch 1.1.了解ES 1.1.1.elasticsearch的作用 1.1.2.ELK彈性棧 1.1.3.elasticsearch和lucene 1.1.4.搜索引擎技術

    2024年02月01日
    瀏覽(50)
  • SpringCloud分布式搜索引擎、數(shù)據(jù)聚合、ES和MQ的結合使用、ES集群的問題

    SpringCloud分布式搜索引擎、數(shù)據(jù)聚合、ES和MQ的結合使用、ES集群的問題

    目錄 數(shù)據(jù)聚合 聚合的分類 ?編輯?DSL實現(xiàn)Bucket聚合 ?編輯 ?DSL實現(xiàn)Metrics聚合?編輯 RestAPI實現(xiàn)聚合 ?對接前端接口?編輯 ?自定義分詞器?編輯 Completion suggester查詢 Completion suggester查詢 酒店數(shù)據(jù)自動補全 實現(xiàn)酒店搜索框界面輸入框的自動補全 ?數(shù)據(jù)同步問題分析?編輯 同

    2024年02月16日
    瀏覽(50)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領取紅包

二維碼2

領紅包