Commit 45dd8854 authored by 杨林's avatar 杨林

Merge branch 'yang' into 'master'

搜索es方法

See merge request !2
parents 7883fc7f 5bc91bff
...@@ -5,9 +5,13 @@ class ESTools: ...@@ -5,9 +5,13 @@ class ESTools:
""" """
es工具 es工具
""" """
# es库
_index = 'goods' _index = 'goods'
# es主机
_host = [{"host": '172.18.45.18', "port": 9200}, {"host": '172.18.45.17', "port": 9200}, _host = [{"host": '172.18.45.18', "port": 9200}, {"host": '172.18.45.17', "port": 9200},
{"host": '172.18.45.16', "port": 9200}, {"host": '172.18.69.190', "port": 9200}] {"host": '172.18.45.16', "port": 9200}, {"host": '172.18.69.190', "port": 9200},
{"host": '172.18.69.192', "port": 9200}]
_TB_RATE = 0.7 _TB_RATE = 0.7
_JD_RATE = 0.55 _JD_RATE = 0.55
...@@ -23,6 +27,7 @@ class ESTools: ...@@ -23,6 +27,7 @@ class ESTools:
:return: 搜索结果和分数 :return: 搜索结果和分数
""" """
if self.es.ping(): if self.es.ping():
# es查询语句
query = { query = {
"query": { "query": {
"bool": { "bool": {
...@@ -43,8 +48,10 @@ class ESTools: ...@@ -43,8 +48,10 @@ class ESTools:
"from": 0, "from": 0,
"size": size "size": size
} }
# 查询结果
hits = self.es.search(index=self._index, body=query) hits = self.es.search(index=self._index, body=query)
res = hits['hits']['hits'] res = hits['hits']['hits']
# 取出查询分数
scores = [i['_score'] for i in res] scores = [i['_score'] for i in res]
scores = sorted(scores) scores = sorted(scores)
return res, scores return res, scores
...@@ -68,17 +75,27 @@ class ESTools: ...@@ -68,17 +75,27 @@ class ESTools:
score_median = sco[int(len(sco) / 2)] score_median = sco[int(len(sco) / 2)]
for i in res: for i in res:
# 对每条数据进行处理 # 对每条数据进行处理
# 分数大于中位数
if i["_score"] > score_median: if i["_score"] > score_median:
# 分数大于平均数
if i["_score"] > score_avg: if i["_score"] > score_avg:
# 源数据
source = i['_source'] source = i['_source']
# 平台
platform = source["platform"] platform = source["platform"]
# 券后佣金
coupon_commission = source["coupon_commission"] coupon_commission = source["coupon_commission"]
# 给用户的佣金比例 # 给用户的佣金比例
rate = self._JD_RATE if platform == 2 else self._TB_RATE rate = self._JD_RATE if platform == 2 else self._TB_RATE
# 券金额
coupon_amount = source["coupon_amount"] coupon_amount = source["coupon_amount"]
# 优惠文案
discount_text = f'¥{coupon_amount}券' if coupon_amount > 0 else '' discount_text = f'¥{coupon_amount}券' if coupon_amount > 0 else ''
# 用户佣金
user_commission = "{:.2f}".format(coupon_commission * rate) user_commission = "{:.2f}".format(coupon_commission * rate)
# 券后价
end_price = source["coupon_price"] end_price = source["coupon_price"]
# 最终优惠金额
final_price = round(price - end_price, 2) final_price = round(price - end_price, 2)
result = { result = {
"item_id": source["item_id"], "item_id": source["item_id"],
...@@ -97,6 +114,7 @@ class ESTools: ...@@ -97,6 +114,7 @@ class ESTools:
"user_commission_text": f'返现{user_commission}' "user_commission_text": f'返现{user_commission}'
} }
temp.append(result) temp.append(result)
# 按价格排序
results = sorted(temp, key=lambda x: x["end_price"]) results = sorted(temp, key=lambda x: x["end_price"])
return results return results
else: else:
......
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