基於Elasticsearch 為電商提供商品數據大數據查詢

来源:https://www.cnblogs.com/pmo-sh/archive/2023/06/15/e-commerce-product-use-by-elasticsearch.html
-Advertisement-
Play Games

# 基於Elasticsearch 為電商提供商品數據大數據查詢 # 前言 對於現代電商的產品,維度的多員花,與一套強大的搜索引擎,那是非常必要的。今天我們主要是描述我們在從事電商搜索引擎過程中的遇到的一些問題和經驗分享。 # 過程 ### 數據準備 >> 1、我們準備為我們需要做查找的數據做好一張 ...


基於Elasticsearch 為電商提供商品數據大數據查詢

前言

對於現代電商的產品,維度的多員花,與一套強大的搜索引擎,那是非常必要的。今天我們主要是描述我們在從事電商搜索引擎過程中的遇到的一些問題和經驗分享。

過程

數據準備

1、我們準備為我們需要做查找的數據做好一張視圖,方便我們分析數據查找維度,與查找場景需求。附加代碼,對於Mysql 創建視圖不清楚的,可以自行查找具體的文檔瞭解,在我們完成視圖創建後,我們就已經有了一張視圖表,供我們數據使用。


select `g`.`goods_id` AS `goods_id`,`g`.`publisher_sn` AS `publisher_sn`,`g`.`add_time` AS `add_time`,`g`.`last_update` AS `last_update`,`g`.`goods_name` AS `goods_name`,`g`.`fineness` AS `fineness`,`g`.`look` AS `look`,`g`.`cat_path` AS `cat_path`,`g`.`goods_number` AS `goods_number`,`g`.`shop_price` AS `shop_price`,`g`.`goods_weight` AS `weight`,`g`.`keywords` AS `keywords`,`g`.`goods_desc` AS `goods_desc`,`g`.`isbn` AS `isbn`,`a`.`attr_value` AS `author`,`b`.`attr_value` AS `publisher`,`c`.`attr_value` AS `yiname`,`m`.`age` AS `age`,`m`.`press_intro` AS `press_intro`,`m`.`author_info` AS `author_info`,`m`.`media_intro` AS `media_intro`,`m`.`catalog` AS `catalog`,`m`.`prologue` AS `prologue`,`m`.`selling_point_1` AS `selling_point_1`,`m`.`selling_point_2` AS `selling_point_2`,`m`.`selling_point_3` AS `selling_point_3`,`m`.`detail_intro_1` AS `detail_intro_1`,`m`.`detail_intro_2` AS `detail_intro_2`,`m`.`detail_intro_3` AS `detail_intro_3`,`m`.`wtao_intro` AS `wtao_intro`,`m`.`video_intro` AS `video_intro`,`co`.`positive` AS `positive`,`co`.`negative` AS `negative`,`s`.`name` AS `series_name`,`s`.`name_cn` AS `series_name_cn`,`v`.`title` AS `v_title`,`v`.`article` AS `v_article`,`k`.`bunch_no` AS `bunch_no` from ((((((((`sd_goods` `g` left join `sd_goods_attr` `c` on((`g`.`goods_id` = `c`.`goods_id`))) left join `sd_goods_attr` `a` on((`g`.`goods_id` = `a`.`goods_id`))) left join `sd_goods_attr` `b` on((`g`.`goods_id` = `b`.`goods_id`))) left join `sd_goods_more` `m` on((`g`.`goods_id` = `m`.`goods_id`))) left join `sd_cover_text` `co` on((`g`.`isbn` = `co`.`isbn`))) left join `sd_series_name` `s` on((`g`.`isbn` = `s`.`isbn`))) left join `nosql`.`video_words_result` `v` on((`g`.`isbn` = `v`.`isbn`))) left join `sd_bunch` `k` on((`g`.`isbn` = `k`.`isbn`))) where ((`c`.`attr_id` = 1) and (`a`.`attr_id` = 2) and (`b`.`attr_id` = 3))

img

2、創建查詢索引,在創建這塊的時候,需要主要創建過程中的類型的選擇,方便您在查詢過程中可以應用的更準確與方便。

PUT /products
{
 "settings": {
   "number_of_shards": 5,
   "number_of_replicas": 1
 },
 "mappings": {
     "properties": {
       "goods_id":{
         "type": "text"
       },
       "publisher_sn":{
           "type": "text"
       },
       "goods_name": {
           "type": "text",
           "analyzer": "ik_smart"
       },
       "keywords": {
           "type": "text",
           "analyzer": "ik_smart"
       },
       "weight":{
           "type":"keyword"
       },
       "goods_desc": {
           "type": "text",
           "analyzer": "ik_smart"
       },
       "author": {
           "type": "text",
           "analyzer": "ik_smart"
       },
       "publisher": {
           "type": "text",
           "analyzer": "ik_smart"
       },
       "yiname": {
           "type": "text",
           "analyzer": "ik_smart"
       },
       "fineness":{
           "type": "text"
       },
       "look":{
           "type": "text"
       },
       "isbn":{
           "type": "text"
       },
       "age":{
           "type": "text"
       },
       "press_intro": {
           "type": "text",
           "analyzer": "ik_smart"
       },
       "author_info": {
           "type": "text",
           "analyzer": "ik_smart"
       },
       "media_intro": {
           "type": "text",
           "analyzer": "ik_smart"
       },
       "positive": {
           "type": "text",
           "analyzer": "ik_smart"
       },
       "negative": {
           "type": "text",
           "analyzer": "ik_smart"
       },
       "series_name": {
           "type": "text",
           "analyzer": "ik_smart"
       },
       "series_name_cn": {
           "type": "text",
           "analyzer": "ik_smart"
       },
       "v_title":{
           "type": "text",
           "analyzer": "ik_smart"
       },
       "v_article":{
           "type": "text",
           "analyzer": "ik_smart"
       }
     }
 }
}

3、索引數據的添加,數據的添加方式更多的看具體的團隊的情況,我們這邊主要是使用Canal 來幫助我們完成數據的添加與新增數據的添加,在使用Canal的時候,需要有JAVA經驗,會更好的解決一些同步過程中的問題。

4、對於未使用現成數據同步工具的,自己也是可以根據具體場景寫Hook 來完成數據的添加,對於有不清楚的地方,可以聯繫我們瞭解。

5、對於 Elasticsearch 的部署搭建不熟悉的同步,可以參考我們的 Docker-composer 快速部署方式。

數據使用

數據查找應用,基於 SDK 查找, 對於 Query DSL 不熟悉的同步可以基於我們前面的 How to build a OR condition in Elasticsearch Query DSL 瞭解更多

img

img

本文來自 PMOSH,作者:PMOSH,轉載請註明原文鏈接:https://www.cnblogs.com/pmo-sh/p/e-commerce-product-use-by-elasticsearch.html

服務支持 https://shop34594864.taobao.com/


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • # 背景 如題,這可能算是.net 做小程式的服務端時,繞不開的一個問題,老生常談了。同樣的問題,我記得我2018/19年的一個項目的解決方案是: **修改官方的SignalR.js的客戶端**:把裡面用到瀏覽器的Websocket改成微信小程式的官方api的。目前網上也有不少這樣的方案,已經改好開 ...
  • # 數據模板有什麼用 簡而言之,數據模板能讓你更方便、更靈活的顯示你的各類數據。只有你想不到,沒有它做不到的(感覺有點誇張,實踐之後,你就覺得一點不誇張 :sunglasses:)。 直接對比下效果: **無數據模板** **應用了數據模板** ![](https://img2023.cnblogs ...
  • 這次發佈iNeuOS工業互聯網操作系統V5版本,是一次重大框架重構,同時聚焦將來開發業務系統,V5版本將會長期發展。除了框架重構外,我們還在研究ChatGPT與iNeuOS怎麼融合。 ...
  • [TOC](Win11自動更新之後開機黑屏) # 0.問題描述 電腦進入睡眠狀態並且沒辦法自動喚醒,只能強制關機。 再次開機的時候,Win11開始給我自動更新,漫長的更新等待期之後,能夠正常開機,輸入密碼,但是進入桌面就是黑屏,只能看到滑鼠箭頭。 查看網上的一些原理解釋,基本上和系統啟動文件有關。而 ...
  • 博客推行版本更新,成果積累制度,已經寫過的博客還會再次更新,不斷地琢磨,高質量高數量都是要追求的,工匠精神是學習必不可少的精神。因此,大家有何建議歡迎在評論區踴躍發言,你們的支持是我最大的動力,你們敢投,我就敢肝 ...
  • 大家好,我是 god23bin。歡迎來到《一分鐘學一個 Linux 命令》系列,每天只需一分鐘,記住一個 Linux 命令不成問題。今天需要你花兩分鐘時間來學習下,因為今天要介紹的是兩個常用的搜索命令:find 和 grep 命令。 ...
  • 從北京到新疆、從中國到南非,從奧運會場館的水泥混凝土到錢塘江畔拔地而起的高樓房產,無不存在著這個集團的身影。 歷經60多年滄桑巨變,某市屬大型國有控股建築產業集團已發展成為一家中國500強企業、A+H整體上市公司,然而,該集團的實力與決心,遠不限於此。 為讓數據更好支撐業務,該集團與袋鼠雲合作,通過 ...
  • 摘要:雲資料庫RDS for MySQL支持參數模板的導入和導出功能。 本文分享自華為雲社區《【雲小課】【第56課】RDS for MySQL參數模板一鍵導入導出,參數配置輕鬆搞定》,作者:資料庫的小雲妹。 雲資料庫RDS for MySQL支持參數模板的導入和導出功能。 導入參數模板:導入後會生成 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...