最近打算自己做一个类似手机电商app的搜索功能,于是自然想到了elasticsearch,首先参考到的美团的app,根据类目和喜好,加上关键词,根据距离远近筛选出满足用户要求的店铺,以及店铺下的满足要求的商品(3个),如下图类似的效果

由于刚刚入坑,elasticsearch,所以看了些文档,elastcisearch,有nested和parent/child这两种格式的文档结构满足功能需求,nested是将店铺和商品信息看做一个文档,当店铺里的商品很多或者,要更改商品信息时需要更新整个文档。根据子集进行过滤后无法支持只取子集的前3个所以暂不考虑,parent/child这种格式的现在6.X现在统一叫join,反正性能好像不太好。elasticsearch属于NoSql的分支,数据尽量扁平化。根据网络上的做法是做宽表冗余。
我采用的就是这种做法。将店铺的部分信息冗余到商品里去。(店铺名称,图标,月销量和坐标)。下图是我的商品的mapping

看下product的文档数据
要求就是根据店铺做折叠,对折叠功能有兴趣的同学可以看下链接:https://elasticsearch.cn/article/132
现在要搜索关键字为数码,且goodTypeId为2的所有商品,按店铺显示
GET product/_search
{
"from": 0,
"size": 10,
"query": {
"bool": {
"must": [{
"match": {
"goodsLabels": {
"query": "数码",
"operator": "OR",
"prefix_length": 0,
"max_expansions": 50,
"fuzzy_transpositions": true,
"lenient": false,
"zero_terms_query": "NONE",
"auto_generate_synonyms
Elasticsearch实践:电商搜索功能实现

最低0.47元/天 解锁文章
937

被折叠的 条评论
为什么被折叠?



