Commit ed060f31 authored by lixiaofang's avatar lixiaofang

add

parent 7851173c
...@@ -13,38 +13,103 @@ from libs.es import ESPerform ...@@ -13,38 +13,103 @@ from libs.es import ESPerform
from trans2es.models.pictorial import PictorialTopics from trans2es.models.pictorial import PictorialTopics
def get_product_sku(query='', offset=0, size=10, sort_type=PRODUCT_ORDER_TYPE.DEFAULT, filters={}): class ProductUtils(object):
try:
multi_fields = { @classmethod
'cn_name_pre': 2, def get_product_sku(cls, query='', offset=0, size=10, sort_type='', filters={}):
'en_name_pre': 2, try:
'alias': 2, q = []
'brand_cn_name': 2, multi_fields = {
'brand_en_name': 2, 'cn_name_pre': 2,
'brand_alias': 2, 'en_name_pre': 2,
'category_cn_name': 2, 'alias': 2,
"effect_cn_name": 2 'brand_cn_name': 2,
} 'brand_en_name': 2,
query_fields = ['^'.join((k, str(v))) for (k, v) in multi_fields.items()] 'brand_alias': 2,
multi_match = { 'category_cn_name': 2,
'query': query, "effect_cn_name": 2
'type': 'cross_fields', }
'operator': 'and', query_fields = ['^'.join((k, str(v))) for (k, v) in multi_fields.items()]
'fields': query_fields, multi_match = {
} 'query': query,
q = [] 'type': 'cross_fields',
'operator': 'and',
if query != '': 'fields': query_fields,
}
sku_must_flter = cls.sku_filter(filters)
logging.info("get sku_must_flter:%s " % sku_must_flter)
logging.info("get sku_must_flter:%s " % type(sku_must_flter))
q["query"] = { q["query"] = {
"bool": { "bool": {
"should": { "must": sku_must_flter
"multi_match": multi_match
},
"minimum_should_match": 1
} }
} }
if query != '':
q["query"] += {
"bool": {
"should": {
"multi_match": multi_match
},
"minimum_should_match": 1
}
}
q["sort"] = [{"comment_nums": {"order": "desc"}}]
logging.info("get product query:%s" % q)
result_dict = ESPerform.get_search_results(ESPerform.get_cli(), sub_index_name="product", query_body=q,
offset=offset, size=size)
return result_dict
except:
logging.error("catch exception, query_sku:%s" % traceback.format_exc())
return []
@classmethod
def sku_filter(cls, filters):
"""处理过滤器部分。"""
logging.info("get filters:%s" % filters)
f = [
{'term': {"have_image": True}},
{'term': {"is_online": True}},
{'term': {"is_deleted": False}},
]
if not filters:
return f
for k, v in filters.items():
if v in (None, '', []):
continue
if k == "brand":
f.append({"term": {"cn_name_pre": v}},
{"term": {"en_name_pre": v}},
{"term": {"alias": v}}, )
if k == "effect":
f.append({"term": {"effect_cn_name": v}})
if k == "catrgory":
f.append({"term": {"category_cn_name": v}})
else:
if isinstance(v, list):
f.append({
"terms": {k: v},
})
else:
f.append({
"term": {k: v},
})
except: return f
logging.error("catch exception, query_sku:%s" % traceback.format_exc())
return []
...@@ -7,14 +7,13 @@ import traceback ...@@ -7,14 +7,13 @@ import traceback
import json import json
from libs.cache import redis_client from libs.cache import redis_client
from libs.es import ESPerform from libs.es import ESPerform
from search.utils.group import GroupUtils from search.utils.product import ProductUtils
from search.utils.common import GroupSortTypes from search.utils.common import GroupSortTypes
from libs.es import ESPerform from libs.es import ESPerform
from trans2es.models.pictorial import PictorialTopics
@bind("physical/search/product_sort") @bind("physical/search/query_product_sku")
def pictorial_topic_sort(query='', offset=0, size=2, sort_type=PRODUCT_ORDER_TYPE.DEFAULT, filters={}): def product_hot_sort(query='', offset=0, size=2, sort_type='', filters={}):
''' '''
商品sku排序 商品sku排序
:param query: :param query:
...@@ -25,8 +24,16 @@ def pictorial_topic_sort(query='', offset=0, size=2, sort_type=PRODUCT_ORDER_TYP ...@@ -25,8 +24,16 @@ def pictorial_topic_sort(query='', offset=0, size=2, sort_type=PRODUCT_ORDER_TYP
:return: :return:
''' '''
try: try:
res = get_product_sku(query=query, offset=offset, size=size, sort_type=sort_type, filters=filters) res = ProductUtils.get_product_sku(query=query, offset=offset, size=size, sort_type=sort_type, filters=filters)
product_list = []
res_hit = res["hits"]["hits"]
for item in res_hit:
product_id = item["_source"]["id"]
product_list.append(product_id)
return {"product_hot_ids:%s" % product_list}
except: except:
logging.error("catch exception,err_msg:%s" % traceback.format_exc()) logging.error("catch exception,err_msg:%s" % traceback.format_exc())
return {"pict_pictorial_ids_list": []} return {"pict_pictorial_ids_list": []}
{ {
"dynamic":"strict", "dynamic":"strict",
"_routing": {"required": true}, "_routing": {"required": false},
"properties": { "properties": {
"id":{"type":"long"}, //id "id":{"type":"long"}, //id
"is_online":{"type":"boolean"},//上线 "is_online":{"type":"boolean"},//上线
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment