es筛选数据_elasticsearch 属性筛选 商品属性筛选 elasticsearch设计实现

elasticsearch 属性筛选 商品属性筛选 elasticsearch设计实现

每个电商网站根据商品属性筛选商品是硬需求,实现方案有哪些?

纯mysql方案问题

纯mysql数据库查询性能无法达到要求,需要使用属性表不断自己做连接查询。

一是因为mysql字段需要实现设计好,商品属性又是不确定的,所以商品属性存储通常是mysql的纵表,这为属性筛选增加了无限障碍

同时,商品属性数据通常非常巨大,属性表又通常会用各种方式分表(按分类,按商品ID等),这更让属性筛选在性能上无法满足需求

mongodb+cache方案

早期很多网站采用的方式是mongodb+cache的方式,商品完整属性数据信息放到mongodb中,mongodb自身能利用好内存,小数据量可以直接用mongodb,稍大点的数据量,mongodb自身查询性能会迅速下降(mongo主要靠内存及少量好的索引提高查询性能,属性字段做索引不科学),这时可以mongodb配合cache(memcache,redis等),但是随着数据量的增加,cache命中情况越来越低,系统崩溃也是常有的事。

elasticsearch方案能很好的解决查询的性能问题

通常意义的搜索引擎都是全文搜索,但是elasticsearch却远不局限于此,能直接当“数据库用”啊,神器,性能?目前来看不是事。下面直接干货,不多解析为什么,想进一步了解的还是移步elasticsearch的文档Elasticsearch Reference

python 版创建index并添加测试数据

# encoding: utf-8

import json

import requests

from elasticsearch import Elasticsearch, helpers

def main():

mappings = {

"mappings": {

"goods":{

"properties": {

'goods_id': {

"type": "long",

},

"goods_name": {

"type": "text",

},

"attrs": {

"type":

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值