完整电商项目--(六)商品模块(6):商品搜索Elasticsearch

使用Elasticsearch实现电商产品搜索和推荐系统 例如,如果发现用户对某一推荐产品的点击率很低,分析原因可能是推荐的产品不符合用户需求,进而调整推荐算法。根据产品的属性和用户的兴趣偏好进行推荐。例如,对于经常被搜索的热门关键词和热门产品,其查询结果可以缓存起来,当再次收到相同的搜索请求时,可以直接从缓存中获取结果,减少查询时间。例如,找到与当前用户有相似购买行为的其他用户,然后推荐这些相似用户购买过但当前用户尚未购买的产品。 阅读详情

Elasticsearch

介绍

  • Elasticsearch 是用 Java 实现的,实现全文检索的开源的搜索引擎。
  • 它可以快速地储存、搜索和分析海量数据。维基百科、Stack Overflow、Github等都采用它
  • Elasticsearch 的底层是开源库 Lucene。但是,没法直接使用 Lucene,必须自己写代码去调用它的接口。
  • Elasticsearch 不支持对中文进行分词建立索引,需要配合扩展elasticsearch-analysis-ik来实现中文分词处理

安装:docker

# 从仓库拉取镜像
$ sudo docker image pull delron/elasticsearch-ik:2.4.6-1.0

配置Elasticsearch-ik

  • 修改/home/python/elasticsearc-2.4.6/config/elasticsearch.yml第54行。
    更改ip地址为本机真实ip地址

使用docker运行Elasticsearch-ik

sudo docker run -dti --name=elasticsearch --network=host -v /home/python/elasticsearch-2.4.6/config:/usr/share/elasticsearch/config delron/elasticsearch-ik:2.4.6-1.0
  • 之后可以通过 sudo docker image ls 查看镜像

Haystack

介绍

  • 使用背景:Elasticsearch 的底层是开源库 Lucene。但是没法直接使用 Lucene,必须自己写代码去调用它的接口。
  • Haystack 是在Django中对接搜索引擎的框架,搭建了用户和搜索引擎之间的沟通桥梁
  • 我们在Django中可以通过使用 Haystack 来调用 Elasticsearch 搜索引擎
  • Haystack 可以在不修改代码的情况下使用不同的搜索后端(比如 Elasticsearch、Whoosh、Solr等等)

安装

$ pip install django-haystack
$ pip install elasticsearch==2.4.1

django中注册应用和路由

INSTALLED_APPS = [
    'haystack', # 全文检索
]

url(r'^search/', include('haystack.urls')),

Haystack配置

# Haystack
HAYSTACK_CONNECTIONS = {
    'default': {
        'ENGINE': 'haystack.backends.elasticsearch_backend.ElasticsearchSearchEngine',
        'URL': 'http://192.168.103.158:9200/', # Elasticsearch服务器ip地址,端口号固定为9200
        'INDEX_NAME': 'meiduo_mall', # Elasticsearch建立的索引库的名称
    },
}

# 当添加、修改、删除数据时,自动生成索引
HAYSTACK_SIGNAL_PROCESSOR = 'haystack.signals.RealtimeSignalProcessor'
  • HAYSTACK_SIGNAL_PROCESSOR 配置项:保证了在Django运行起来后,有新的数据产生时,Haystack仍然可以让Elasticsearch实时生成新数据的索引

Haystack建立数据索引

1.创建索引类

  • 通过创建索引类,来指明让搜索引擎对哪些字段建立索引,也就是可以通过哪些字段的关键字来检索数据。
  • 本项目中对SKU信息进行全文检索,所以在goods应用中新建search_indexes.py文件,用于存放索引类。
from haystack import indexes

from .models import SKU


class SKUIndex(indexes.SearchIndex, indexes.Indexable):
    """SKU索引数据模型类"""
    text = indexes.CharField(document=True, use_template=True)

    def get_model(self):
        """返回建立索引的模型类"""
        return SKU

    def index_queryset(self, using=None):
        """返回要建立索引的数据查询集"""
        return self.get_model().objects.filter(is_launched=True)
  • 索引类SKUIndex说明
    • 在SKUIndex建立的字段,都可以借助Haystack由Elasticsearch搜索引擎查询。
    • 其中text字段我们声明为document=True,表名该字段是主要进行关键字查询的字段。
    • text字段的索引值可以由多个数据库模型类字段组成,具体由哪些模型类字段组成,我们用use_template=True表示后续通过模板来指明

创建text字段索引值模板文件

  • 在templates目录中创建text字段使用的模板文件
  • 在templates/search/indexes/goods/sku_text.txt文件中定义
{{ object.id }}
{{ object.name }}
{{ object.caption }}
  • 模板文件说明:当将关键词通过text参数名传递时,可以
    • 此模板指明SKU的id、name、caption作为text字段的索引值来进行关键字索引查询

3.手动生成初始索引

$ python manage.py rebuild_index
  • 最后写视图:
    • 请求地址:/search/ (刚才自己定义的视图地址)
  • 再将 搜索结果处理(比如分页,渲染模板)展示即可。
ElasticSearch——全文搜索引擎 一、为什么需要全文搜索引擎? 首先先来了解一个概念,在我们生活中一般来说有两种数据:结构化数据、非结构化数据 结构化数据:指具有固定格式或有限长度的数据,如数据库,元数据等。 非结构化数据: 非结构化数据又可称为全文数据,指不定长或无固定格式的数据,如邮件,word文档等。 对于结构化数据我们可以直接从数据库查询,而对于非结构化的数据此时就要用到全文检索的方式查询,比如对一个文档或者网页中的内容文本每个词建立一个索引,把这些非结构化的变成结构化的方式然后来查询。 全文搜索引擎百度百科定义:全文搜索引擎是目前 阅读详情

相关推荐

Elasticsearch Java 实战应用案例:商品搜索引擎

本案例展示了如何使用 Elasticsearch 和 Java 实现一个高效的商品搜索引擎。从环境搭建、数据模型设计到具体的功能实现,展示了完整的流程。通过使用 Elasticsearch 的强大功能,可以极大提升用户的搜索体验,并为电子商务平台提供更高效的数据处理能力。

l1337224493的博客 1513

java 电商项目 搜索模块,SSH电商项目实战之十:商品类基本模块的搭建

前面我们完成了与商品类别相关的业务逻辑,接下来我们开始做具体商品部分。1. 数据库建表并映射Model首先我们在数据库中新建一张表,然后使用逆向工程将表映射成Model类,表如下:SQL代码/*=============================*//*Table:商品表结构*//*=============================*/createtabl...

weixin_35378583的博客 489

从 0 到 1 搭建亿级商品 ES 搜索引擎

平台招商管理系统服务于抖音电商平台活动的多实体招商场景,会通过招商平台来进行收品,选品,然后分发品到各 C 端系统。招商的实体也非常的多样化,有达人直播间,商品招商,优惠券招商等等,其中商品招商是我们体量最大的招商实体。招商平台服务架构以上我们已经完成了第一阶段的搭建,完成了容灾部署,一致性对账,以及基本系统异常应对策略。此时 ES 可以支持千万级别的商品索引的读写请求,单机房流量在 500 ~ 100 QPS 之间波动,写流量基本维持在 500 QPS 左右。

字节跳动云原生计算官方账号 1647

整合Elasticsearch实现商品搜索

Elasticsearch 是一个分布式、可扩展、实时的搜索与数据分析引擎。它能从项目一开始就赋予你的数据以搜索、分析和探索的能力,可用于实现全文搜索和实时数据统计。

dyx1472581的博客 2577

亿级高并发电商项目-- 实战篇 --万达商城项目 十(安装与配置Elasticsearch和kibana、编写搜索功能、向ES同步数据库商品数据)

万达商城是一款常见的电商网站,项目采用前后端分离架构。前端 开发主要使用vue.js,后端使用Dubbo技术进行分布式调用。项目 包含电商系统的大部分功能,分为商家端和用户端。商家端有权限 管理、商品管理、广告管理等

3097

ElasticSearch查询实战之电商商城商品搜索

1.简介 Elasticsearch是一个基于Lucene的搜索服务器。提供了一个分布式多用户能力的全文搜索引擎,在前面的文章中讲解了单机、集群搭建、DSL语句、分词器、以及整合SpringBoot的Demo。 Elasticsearch专题篇 ElasticSearch基本概念(索引,分片,节点,倒排索引…) ElasticSearch7.x单机版安装 ElasticSearch7.x高可用集群版搭建 Elasticsearch 7x 配置文件详解 Elasticsearch客户端工具之kibana E

程序员小强的博客 9152

[ElasticSearch]分析京东商城商品搜索实现|聚合|全文查找|搜索引擎|ES Java High Level Rest Client|ES Java API Client

Elasticsearch 是一个基于 Lucene 的开源搜索和分析引擎,它提供了一个分布式、多租户能力的全文搜索引擎,具有 HTTP 网络接口和无模式的 JSON 文档。Elasticsearch 的设计目标是让全文搜索变得简单而快速,同时提供接近实时的搜索和分析。

浣花御劍 2704

Elasticsearch电商搜索实战:从0到1构建高性能商品搜索引擎

手把手教你用SpringBoot+ES打造智能商品搜索系统! Elasticsearch在实际业务中的应用。包含商品索引、多条件筛选、智能排序、高亮显示、搜索建议、分类聚合等10大核心功能,提供完整的代码实现和测试数据。

肖哥弹架构博客 1136

ElasticSearch实现商品搜索与聚合分析

Elasticearch实现商品搜索与聚合分析 文章目录Elasticearch实现商品搜索与聚合分析前言一、Elasticsearch使用介绍二、效果展示三、代码实现总结 前言 搜索是互联网各个项目中的常见场景,而Elasticsearch就是搜索领域最重要的工具之一,它基于倒排索引,天然支持全文搜索,且搜索效率极高。而且支持分布式,可横向拓展。具有存储,搜索,分析功能。总的来说,you know,for search. 一、Elasticsearch使用介绍 根据官网,ES具有存储,搜索,分析三大功

weixin_44909963的博客 4798

亿级高并发电商项目-- 实战篇 --万达商城项目 十一(编写商品搜索功能、操作商品同步到ES、安装RabbitMQ与Erlang,配置监听队列与消息队列)

万达商城是一款常见的电商网站,项目采用前后端分离架构。前端 开发主要使用vue.js,后端使用Dubbo技术进行分布式调用。项目 包含电商系统的大部分功能,分为商家端和用户端。商家端有权限 管理、商品管理、广告管理等

2430

机器人视觉实战:用OpenCV搞定手眼标定(附完整C++代码)

本文详细介绍了使用OpenCV实现机器人视觉中的手眼标定技术,包括核心算法、工业场景优化及完整C++代码示例。通过解析坐标系转换问题,提供从数据采集到标定验证的全流程解决方案,帮助开发者在复杂工业环境中实现高精度机械臂与视觉系统的协同作业。

weixin_29306571的博客 481

电商搜索实战:用Elasticsearch构建商品搜索引擎

它内置了Elasticsearch环境,可以直接在线编写和测试查询语句,还能一键部署完整的搜索应用,省去了搭建环境的麻烦。我实际使用时发现它的响应速度很快,界面也很友好,特别适合快速验证想法。最近在做一个电商项目,需要实现商品搜索功能,经过调研选择了Elasticsearch作为搜索引擎。这里记录下整个开发过程,希望能给有类似需求的同学一些参考。特别是它的分布式特性和丰富的查询功能,非常适合电商搜索这种场景。特别要注意的是,对于搜索建议功能,需要单独建立一个completion类型的字段。

MoonbeamRaven28的博客 1084

树莓派国内镜像源一键配置指南

本文提供树莓派国内镜像源一键配置指南,解决默认国外源访问缓慢问题。通过自动检测系统版本并支持清华、阿里云、中科大等主流镜像站选择,大幅提升软件更新与安装速度。包含详细的手动配置方法和常见问题排查,帮助用户快速完成树莓派换源优化。

tequila的博客 1373

用Elasticsearch构建电商搜索平台(有赞)

随着互联网数据规模的爆炸式增长,如何从海量的历史,实时数据中快速获取有用的信息,变得越来越有挑战性。

东境物语 9739

晶晨S905L3S/S905L3SB芯片刷机实战:BL加载工具与线刷固件全解析

本文针对晶晨S905L3S/S905L3SB芯片电视盒子刷机时常见的2%失败问题,提供了两种核心解决方案。一是使用已集成特殊通信协议的专用版USB Burning Tool(如V2.2.5/V2.2.7),二是采用旧版工具配合独立的BootLoader加载工具。文章详细解析了两种方案的原理、操作步骤、固件选择及常见问题排查,旨在帮助用户成功完成刷机,让老旧设备焕发新生。

weixin_29238147的博客 1106

Godot 4.x 实现 JRPG 回合制战斗系统:架构、状态机与实战优化

游戏开发中,状态机是管理复杂逻辑流转的核心设计模式,尤其在回合制战斗这类事件驱动的场景中。其原理是通过定义有限的状态和明确的转移条件,来控制系统在不同阶段的行为,从而实现清晰、可维护的流程控制。这项技术的价值在于能够将杂乱的条件判断代码结构化,降低模块间的耦合度,提升代码的可读性和可扩展性。在游戏开发领域,状态机广泛应用于角色AI、UI流程、战斗系统等场景。本文以Godot引擎为例,深入探讨如何运用节点与信号驱动架构,构建一个健壮的JRPG(日式角色扮演游戏)回合制战斗系统。内容涵盖从核心的**状态机**设

weixin_33749242的博客 499

详解最热门搜索引擎——ES

一、产生背景 ​ 互联网发展早期的时候,对于一般的公司储存的数据量不是那么的大,所以很多公司更倾向于使用数据库去存储和查询数据,如:现在去MySQL中查询数据,大概的查询方式就是:select * from table where filed like “%XXX%”或者其他方式,但是,如果我们在查询的时候没有用到或命中数据库建立的索引话,则会扫描整张表,即便是MySQL做过单表查询能力优化,但是他的极限也只在400万左右,且还会经常出现超时现象,让后为了解决这些问题,。很多公司就开始对数据库进

会编程的小郑 1万+

wvp gb28181 pro 平台国标级连功能说明

国标28181不同平台之间支持两种连接方式,平级和上下级,WVP目前支持向上级级联。

zengliguang的专栏 3884

java电商商品搜索_电商项目实战(架构六)——Elasticsearch实现商品搜索

一、前言Elasticsearch是一个分布式、可扩展、实时的搜索与数据分析引擎,它能从一开始就赋予你的数据以搜索、分析和探索的能力,可用于全文搜索和数据实时统计。二、框架Elasticsearch的安装和使用1、下载Elasticsearch6.2.2压缩包,下载地址:https://www.elastic.co/cn/downloads/past-releases/elasticsearch-...

weixin_33788825的博客 1374

『MaxKB 2.x 开发环境搭建』在Windows下运行最新源码的完整步骤

本文将详细介绍如何在Windows系统中完成MaxKB最新版(2.x)开发环境的搭建,包括前端、后端以及数据库的配置,确保开发者能够顺利启动项目。

老陈聊架构 584

移动支付APP(仿支付宝)

Toast.makeText(PayActivity.this, "支付失败:" + payResponse.getMsg(), Toast.LENGTH_SHORT).show();Toast.makeText(PayActivity.this, "支付失败:" + t.getMessage(), Toast.LENGTH_SHORT).show();Toast.makeText(PayActivity.this, "支付失败", Toast.LENGTH_SHORT).show();

寒寒豆豆软件公司的博客 134

剖析电商搜索要点并基于Es+Redis模拟电商搜索行为

由于水平受限,该文章并不能深度去剖析真实电商搜索功能的底层,接下来的部分主要是我根据网页查询+ai问答总结而得 希望大家多多包涵,同时也欢迎纠错指正!各大电商平台的搜索大致可分为三个阶段。

SoulruiA的博客 4043

京东运维面试题及参考答案

cgroup(Control Group)是 Linux 内核提供的一种可以限制、控制与分离一个进程组群的资源(如 CPU、内存、磁盘 I/O 等)的机制。通过 cgroup,可以为不同的进程或进程组分配特定的资源配额,实现资源的隔离和管理。比如,在一个服务器上运行多个容器时,可以使用 cgroup 来限制每个容器对 CPU 和内存的使用,防止某个容器占用过多资源而影响其他容器的运行。cgroup 还可以对进程进行优先级设置,确保关键进程能够优先获得资源。

大模型大数据攻城狮的专栏 1235

【ES】Elasticsearch实现电商词库提示搜索

Elasticsearch实现电商词库提示搜索 前序 # 自定义拼音分词器 GET _analyze { "text": ["豆腐", "美食", "程序员", "java程序员"], "tokenizer": "keyword", "filter": [ { "type": "pinyin", "keep_first_letter": true, "keep_full_pinyin": false, "keep_none_chinese"

九离的博客 3949

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

06 | 如何用Elasticsearch构建商品搜索系统?

搜索这个特性可以说是无处不在,现在很少有网站或者系统不提供搜索功能了,所以,即使你不是一个专业做搜索的程序员,也难免会遇到一些搜索相关的需求。搜索这个东西,表面上看功能很简单,就是一个搜索框,输入关键字,然后搜出来想要的内容就好了。搜索背后的实现,可以非常简单,简单到什么程度呢?我们就用一个 SQL,LIKE 一下就能实现;也可以很复杂,复杂到什么程度呢?不说百度谷歌这种专业做搜索的公司,其他非专业做搜索的互联网大厂,搜索团队大多是千人规模,这里面不仅有程序员,还有算法工程师、业务专家等等。

qq_37756660的博客 1889

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

分布式搜索引擎 elasticsearch

分布式搜索引擎 elasticsearch 第一部分 1.初识elasticsearch 1.1.了解ES 1.1.1.elasticsearch的作用 elasticsearch是一款非常强大的开源搜索引擎,具备非常多强大功能,可以帮助我们从海量数据中快速找到需要的内容 例如: 在GitHub搜索代码 在电商网站搜索商品 在百度搜索答案 在打车软件搜索附近的车 1.1.2.ELK技术栈 elasticsearch结合kibana、Logstash、Beats,也就是elasti

KYGALYX的博客 3865
上一篇: 完整电商项目--(六)商品模块(5):商品列表页
下一篇: 完整电商项目--(六)商品模块(7):商品详情页
我是py呀
博客等级 码龄8年 205粉丝 130原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值