# -*- coding:UTF-8 -*-
# @Time  : 2020/12/15 17:09
# @File  : es_kocust_tractate.py
# @email : litao@igengmei.com
# @author : litao

# -*- coding:UTF-8 -*-
# @Time  : 2020/12/15 10:47
# @File  : es_locust_answer.py
# @email : litao@igengmei.com
# @author : litao
import json
import time
from locust import HttpUser, task
from locust.contrib.fasthttp import FastHttpUser

ip = '172.16.52.33@elastic:gengmei!@#'
ip, auth = ip.split("@", 1)

query_list = {"鼻综合": 22,
              "激光脱面部其他毛发": 36,
              "切开双眼皮": 85,
              "埋线双眼皮": 86,
              "定点双眼皮": 87,
              "开内眼角": 88,
              "开外眼角": 89,
              "内切祛眼袋": 90,
              "外切祛眼袋": 91,
              "激光祛眼袋": 92,
              "吸脂祛眼袋": 93,
              "上眼睑下垂矫正": 95,
              "玻尿酸填充卧蚕": 97,
              "自体脂肪填充泪沟": 98,
              "玻尿酸填充泪沟": 99,
              "切眉": 100,
              "激光祛黑眼圈": 101,
              "自体脂肪填充黑眼圈": 102,
              "鼻部膨体假体取出": 106,
              "驼峰鼻矫正": 107,
              "鹰钩鼻矫正": 108,
              "歪鼻矫正": 109,
              "朝天鼻矫正": 110,
              "缩鼻背": 111,
              "手术缩鼻头": 112,
              "自体脂肪隆鼻": 114,
              "玻尿酸隆鼻": 115,
              "自体软骨垫鼻尖": 116,
              "注射瘦脸": 117,
              "吸脂瘦脸": 118,
              "自体脂肪丰苹果肌": 120,
              "玻尿酸填充丰苹果肌": 121,
              "颧骨内推": 122,
              "玻尿酸丰下巴": 123,
              "下巴前推": 124,
              "自体脂肪丰下巴": 125,
              "硅胶垫下巴": 126,
              "膨体垫下巴": 127,
              "缩下巴": 129,
              "宽下巴矫正": 130,
              "激光溶脂祛双下巴": 131,
              "酒窝成形术": 134,
              "自体脂肪丰面颊": 135,
              "自体脂肪丰太阳穴": 136,
              "玻尿酸丰太阳穴": 137,
              "硅胶丰太阳穴": 138,
              "膨体丰太阳穴": 139,
              "自体脂肪丰额头": 140,
              "玻尿酸丰额头": 141,
              "硅胶丰额头": 142,
              "膨体丰额头": 143,
              "招风耳矫正": 144,
              "大耳缩小术": 145,
              "杯状耳矫正": 146,
              "唇腭裂修复": 150,
              "厚唇改薄术": 151,
              "玻尿酸丰唇": 152,
              "自体脂肪丰唇": 153,
              "处女膜修复": 161,
              "包皮手术": 164,
              "填充阴唇": 165,
              "阴唇整形": 167,
              "注射祛腋臭": 168,
              "激光祛腋臭": 169,
              "激光脱发际线": 171,
              "植眉": 172,
              "种鬓角": 174,
              "植睫毛": 175,
              "黑脸娃娃": 180,
              "激光脱唇毛": 181,
              "激光祛红血丝": 186,
              "光子嫩肤": 187,
              "激光祛纹身": 192,
              "玻尿酸除颈纹": 197,
              "自体脂肪除颈纹": 198,
              "玻尿酸除法令纹": 200,
              "自体脂肪除法令纹": 201,
              "玻尿酸除眉间纹": 203,
              "胸部失败修复": 210,
              "乳房再造": 211,
              "假体隆胸": 212,
              "吸脂祛副乳": 213,
              "手术祛副乳": 214,
              "乳头内陷矫正": 215,
              "乳头缩小": 216,
              "乳晕缩小": 217,
              "乳晕漂染": 218,
              "乳房缩小": 219,
              "胸部下垂矫正": 220,
              "中医减肥其他项目": 222,
              "吸脂瘦背部": 224,
              "自体脂肪丰臀": 225,
              "产后塑形": 226,
              "腹壁成形术": 228,
              "膨体隆鼻": 232,
              "硅胶隆鼻": 233,
              "自体肋软骨隆鼻": 234,
              "激光溶脂瘦脸": 236,
              "注射瘦腿": 237,
              "吸脂瘦大腿": 238,
              "吸脂瘦小腿": 239,
              "吸脂瘦手臂": 240,
              "自体脂肪隆胸": 241,
              "玻尿酸除面部细纹": 243,
              "自体脂肪除面部细纹": 244,
              "植发际线": 251,
              "吸脂祛双下巴": 252,
              "鼻翼缩小": 253,
              "全瓷牙": 255,
              "手术祛腋臭": 257,
              "像素激光": 258,
              "植胡须": 770,
              "吸脂塑臀": 774,
              "点阵激光": 775,
              "玻尿酸丰面颊": 776,
              "玻尿酸祛黑眼圈": 777,
              "胶原蛋白填充丰唇": 778,
              "胶原蛋白填充祛黑眼圈": 780,
              "胶原蛋白注射隆鼻": 782,
              "胶原蛋白丰太阳穴": 783,
              "胶原蛋白填充丰下巴": 784,
              "胶原蛋白填充隆胸": 785,
              "胶原蛋白填充丰臀": 786,
              "胶原蛋白填充除法令纹": 787,
              "胶原蛋白填充丰面颊": 788,
              "胶原蛋白填充泪沟": 789,
              "下眼睑下至": 790,
              "泪腺脱垂整形": 792,
              "自体脂肪填充卧蚕": 793,
              "真皮填充卧蚕": 795,
              "埋线隆鼻": 796,
              "鼻中隔软骨垫鼻头": 797,
              "注射缩鼻头": 798,
              "假体垫鼻基底": 803,
              "玻尿酸垫鼻基底": 804,
              "自体脂肪垫鼻基底": 805,
              "鼻中隔软骨隆鼻": 806,
              "鼻孔矫正": 810,
              "溶脂针瘦脸": 811,
              "颧骨提高": 813,
              "凸嘴矫正": 816,
              "面部不对称改善": 817,
              "人工骨垫下巴": 819,
              "胶原蛋白填充苹果肌": 820,
              "白瓷娃娃": 821,
              "热玛吉": 822,
              "PRP自体血清美肤": 824,
              "美白针": 825,
              "手术祛疤": 828,
              "综合祛疤": 832,
              "注射祛疤": 834,
              "激光点痣": 835,
              "射频溶脂瘦手臂": 836,
              "小腿神经阻断术": 838,
              "假体丰臀": 839,
              "吸脂瘦肩": 841,
              "注射瘦肩": 842,
              "点穴减肥": 843,
              "针灸减肥": 844,
              "埋线减肥": 845,
              "错颌锁颌": 850,
              "隐形矫正": 851,
              "根管治疗": 853,
              "M唇成形术": 864,
              "阴茎延长": 866,
              "阴茎增粗": 867,
              "玻尿酸丰耳垂": 868,
              "轮廓修复术": 869,
              "胸部假体取出": 870,
              "超声提升": 872,
              "线雕": 873,
              "双眼皮修复": 878,
              "眶隔脂肪释放": 881,
              "玻尿酸垫眉弓": 885,
              "自体脂肪垫眉弓": 886,
              "硅胶垫眉弓": 887,
              "膨体垫眉弓": 888,
              "上眼睑祛脂": 890,
              "鼻小柱延长": 897,
              "额头缩小": 899,
              "人中缩短": 901,
              "射频溶脂塑臀": 909,
              "漂唇": 910,
              "红蓝光祛痘": 912,
              "化学剥脱祛斑": 915,
              "冷光美白": 917,
              "激光祛疤": 919,
              "拉皮": 926,
              "黄金微针": 928,
              "激光除皱": 930,
              "埋线除皱": 931,
              "放射状角膜切开术": 942,
              "准分子激光切削术": 943,
              "准分子激光原位角膜磨镶术": 944,
              "透明晶体摘除术": 945,
              "远视镜片矫正": 946,
              "激光屈光性角膜切削术": 947,
              "圆柱镜矫正": 948,
              "角膜接触镜矫正": 949,
              "角膜屈光手术": 950,
              "斜视镜片矫正": 951,
              "斜视矫正手术": 952,
              "眼科检查": 953,
              "玻尿酸填充隆胸": 954,
              "激光紧缩阴道": 960,
              "眼袋修复": 964,
              "鼻形态修复": 965,
              "鼻部硅胶假体取出": 966,
              "激光除妊娠纹": 973,
              "黄金微针除妊娠纹": 974,
              "冷冻祛腋臭": 980,
              "半永久纹眉": 1370,
              "水氧活肤": 1703,
              "自体脂肪全面部填充": 1890,
              "镭射净肤": 1966,
              "半永久纹眼线": 2057,
              "水光针": 2059,
              "无针水光": 2060,
              "射频提升": 2063,
              "激光脱腋毛": 2065,
              "激光脱比基尼部位": 2066,
              "激光脱臂毛": 2067,
              "激光脱大腿/小腿毛": 2068,
              "彩光嫩肤": 2072,
              "耳软骨隆鼻": 2073,
              "果酸焕肤": 2108,
              "身体检查": 2213,
              "玻尿酸溶解酶": 2412,
              "眼综合": 2417,
              "开眼角修复": 2429,
              "合金烤瓷牙": 2453,
              "二氧化锆烤瓷牙": 2454,
              "超声波洗牙": 2455,
              "树脂补牙": 2456,
              "拔龋齿": 2459,
              "拔智齿": 2460,
              "嘴角上扬术": 2466,
              "口腔检查": 2467,
              "孕睫术": 2723,
              "玻尿酸精华导入": 2778,
              "双颚手术": 2818,
              "热拉提": 2866,
              "人工骨隆鼻": 2924,
              "自体真皮隆鼻": 2925,
              "鼻小柱缩短": 2926,
              "长鼻矫正": 2929,
              "颧弓降低": 2932,
              "微针祛痘坑": 2935,
              "激光祛斑": 2936,
              "皮秒激光": 2938,
              "小气泡美肤": 2939,
              "微针水光": 2941,
              "玻尿酸丰乳头": 2944,
              "乳头再造": 2945,
              "胶原蛋白注射丰乳晕": 2946,
              "提眉修复": 2950,
              "卧蚕手术修复": 2951,
              "半永久纹发际线": 2954,
              "颧骨填充术": 3001,
              "微晶瓷隆鼻": 3038,
              "激光祛脂肪粒": 3041,
              "少女针注射": 3043,
              "童颜针注射": 3045,
              "假体填充苹果肌": 3048,
              "抗敏修复": 3049,
              "洗眼线": 3050,
              "肤质检测": 3052,
              "阴蒂整形": 4282,
              "菲洛嘉": 4437,
              "HPV检查": 4870,
              "全脸整形套餐": 5058,
              "V脸套餐": 5059,
              "祛斑套餐": 5064,
              "美白套餐": 5065,
              "补水套餐": 5066,
              "皮肤综合管理套餐": 5067,
              "洗牙套餐": 5070,
              "唇部综合": 5071,
              "除皱套餐": 5073,
              "玻尿酸注射套餐": 5074,
              "乳腺检查": 5510,
              "全飞秒": 5871,
              "半飞秒": 5872,
              "ICL晶体植入": 5873,
              "异物取出": 5874,
              "美胸套餐": 6145,
              "激光脱全身毛发": 6160,
              "射频祛眼袋": 6163,
              "O型腿矫正": 6455,
              "X型腿矫正": 6456,
              "G点注射": 7091,
              "牙齿瓷贴面": 7129,
              "自体软骨垫鼻基底": 7151,
              "女性私密检查": 7175,
              "阴唇漂红": 7176,
              "手术紧缩阴道": 7177,
              "性腺激活": 7179,
              "种植牙齿": 7809,
              "下颌角切除术": 7823,
              "玻尿酸丰眼窝": 14198,
              "注射去鼻背纹": 14209,
              "注射去口周纹": 14210,
              "注射去动态纹": 14211,
              "注射治疗多汗": 14215,
              "注射颏肌放松": 14220,
              "美白导入": 14225,
              "埋线祛眼袋": 14590,
              "光纤溶脂祛眼袋": 14591,
              "微针祛黑眼圈": 14593,
              "射频祛黑眼圈": 14594,
              "眼综合修复": 14595,
              "宽鼻矫正": 14596,
              "颧骨颧弓整形术": 14597,
              "下巴截骨": 14598,
              "下巴硅胶假体取出": 14599,
              "下巴膨体假体取出": 14600,
              "下颚前突/地包天": 14601,
              "上颚前突/天包地": 14602,
              "下颌角整形": 14603,
              "取颊脂垫瘦脸": 14605,
              "射频溶脂瘦脸": 14606,
              "光纤溶脂瘦脸": 14607,
              "冷冻溶脂瘦腹部": 14608,
              "冷冻溶脂瘦腰部": 14609,
              "冷冻溶脂瘦手臂": 14610,
              "冷冻溶脂瘦大腿": 14611,
              "冷冻溶脂瘦小腿": 14612,
              "冷冻溶脂瘦肩膀": 14613,
              "冷冻溶脂瘦背部": 14614,
              "冷冻溶脂瘦臀部": 14615,
              "射频溶脂瘦大腿": 14616,
              "射频溶脂瘦小腿": 14617,
              "射频溶脂瘦肩膀": 14618,
              "射频溶脂瘦背部": 14619,
              "射频溶脂瘦腰部": 14620,
              "射频溶脂瘦腹部": 14621,
              "超声溶脂瘦手臂": 14622,
              "超声溶脂瘦腰部": 14623,
              "超声溶脂瘦腹部": 14624,
              "超声溶脂瘦大腿": 14625,
              "超声溶脂瘦小腿": 14626,
              "超声溶脂瘦臀部": 14627,
              "超声溶脂瘦背部": 14628,
              "超声溶脂瘦肩部": 14629,
              "光纤溶脂瘦手臂": 14630,
              "光纤溶脂瘦腰部": 14631,
              "光纤溶脂瘦腹部": 14632,
              "光纤溶脂瘦大腿": 14633,
              "光纤溶脂瘦小腿": 14634,
              "光纤溶脂瘦背部": 14635,
              "光纤溶脂瘦臀部": 14636,
              "光纤溶脂瘦肩部": 14637,
              "吸脂瘦腰部": 14639,
              "吸脂瘦腹部": 14640,
              "吸脂瘦全身": 14641,
              "吸脂失败修复术": 14643,
              "杏仁酸焕肤": 14644,
              "水杨酸焕肤": 14645,
              "清痘针": 14646,
              "冷冻祛痣": 14647,
              "手术祛胎记": 14648,
              "激光祛胎记": 14649,
              "洗眉": 14650,
              "小棕瓶美白": 14651,
              "水光娃娃": 14652,
              "种植面膜": 14653,
              "SMAS除皱手术": 14654,
              "内窥镜手术提升": 14655,
              "小切口手术提升": 14656,
              "干细胞疗法": 14657,
              "复合隆胸": 14658,
              "男性乳房肥大矫正": 14659,
              "头顶加密种植": 14660,
              "美人尖种植": 14661,
              "种植胸毛": 14662,
              "种植私密毛发": 14663,
              "疤痕种植毛发": 14665,
              "防脱理疗": 14667,
              "乌发理疗": 14668,
              "深层清洁": 14669,
              "养发护理": 14670,
              }
query_Str_list = list(query_list.keys())
import random

print(random.choice(query_Str_list))
from locust.exception import RescheduleTask

class QuickstartUser(FastHttpUser):
    @task
    def hello_world(self):
        query = random.choice(query_Str_list)
        data = {
    "from": 0,
    "size": 10,
    "query": {
        "function_score": {
            "functions": [
                {
                    "filter": {
                        "bool": {
                            "should": [
                                {
                                    "terms": {
                                        "content": [
                                            "水光镇",
                                            "有针水光针",
                                            "深层水面膜",
                                            query,
                                            "hydrolifting",
                                            "水光注射",
                                            "水光抗衰",
                                            "aqualiftin",
                                            "水光针prp",
                                            "韩国艺人针",
                                            query
                                        ]
                                    }
                                },
                                {
                                    "terms": {
                                        "author": [
                                            "水光镇",
                                            "有针水光针",
                                            "深层水面膜",
                                            query,
                                            "hydrolifting",
                                            "水光注射",
                                            "水光抗衰",
                                            "aqualiftin",
                                            "水光针prp",
                                            "韩国艺人针",
                                            query
                                        ]
                                    }
                                },
                                {
                                    "terms": {
                                        "tractate_tag_name": [
                                            "水光镇",
                                            "有针水光针",
                                            "深层水面膜",
                                            query,
                                            "hydrolifting",
                                            "水光注射",
                                            "水光抗衰",
                                            "aqualiftin",
                                            "水光针prp",
                                            "韩国艺人针",
                                            query
                                        ]
                                    }
                                },
                                {
                                    "terms": {
                                        "tractate_tag_name_content": [
                                            "水光镇",
                                            "有针水光针",
                                            "深层水面膜",
                                            query,
                                            "hydrolifting",
                                            "水光注射",
                                            "水光抗衰",
                                            "aqualiftin",
                                            "水光针prp",
                                            "韩国艺人针",
                                            query
                                        ]
                                    }
                                },
                                {
                                    "multi_match": {
                                        "query": query,
                                        "fields": [
                                            "content^6",
                                            "author^2",
                                            "tractate_tag_name^3",
                                            "tractate_tag_name_content^4"
                                        ],
                                        "analyzer": "gm_default_index",
                                        "operator": "and",
                                        "type": "best_fields"
                                    }
                                }
                            ],
                            "minimum_should_match": 1
                        }
                    },
                    "weight": 10000
                },
                {
                    "filter": {
                        "bool": {
                            "should": [
                                {
                                    "terms": {
                                        "tractate_tag_name": [
                                            "水光镇",
                                            "有针水光针",
                                            "深层水面膜",
                                            query,
                                            "hydrolifting",
                                            "水光注射",
                                            "水光抗衰",
                                            "aqualiftin",
                                            "水光针prp",
                                            "韩国艺人针",
                                            query
                                        ]
                                    }
                                },
                                {
                                    "terms": {
                                        "tractate_tag_name_content": [
                                            "水光镇",
                                            "有针水光针",
                                            "深层水面膜",
                                            query,
                                            "hydrolifting",
                                            "水光注射",
                                            "水光抗衰",
                                            "aqualiftin",
                                            "水光针prp",
                                            "韩国艺人针",
                                            query
                                        ]
                                    }
                                },
                                {
                                    "multi_match": {
                                        "query": query,
                                        "fields": [
                                            "tractate_tag_name^3",
                                            "tractate_tag_name_content^4"
                                        ],
                                        "analyzer": "gm_default_index",
                                        "operator": "and",
                                        "type": "best_fields"
                                    }
                                }
                            ],
                            "minimum_should_match": 1
                        }
                    },
                    "weight": 20000
                },
                {
                    "filter": {
                        "bool": {
                            "should": [
                                {
                                    "terms": {
                                        "content": [
                                            query
                                        ]
                                    }
                                },
                                {
                                    "terms": {
                                        "author": [
                                            query
                                        ]
                                    }
                                },
                                {
                                    "terms": {
                                        "tractate_tag_name": [
                                            query
                                        ]
                                    }
                                },
                                {
                                    "terms": {
                                        "tractate_tag_name_content": [
                                            query
                                        ]
                                    }
                                },
                                {
                                    "multi_match": {
                                        "query": query,
                                        "fields": [
                                            "content^6",
                                            "author^2",
                                            "tractate_tag_name^3",
                                            "tractate_tag_name_content^4"
                                        ],
                                        "analyzer": "gm_default_index",
                                        "operator": "and",
                                        "type": "best_fields"
                                    }
                                }
                            ],
                            "minimum_should_match": 1
                        }
                    },
                    "weight": 500
                }
            ],
            "boost_mode": "replace",
            "score_mode": "sum",
            "query": {
                "bool": {
                    "must": [
                        {
                            "term": {
                                "is_online": True
                            }
                        },
                        {
                            "range": {
                                "content_level": {
                                    "gte": 3
                                }
                            }
                        }
                    ],
                    "must_not": [
                        {
                            "term": {
                                "status": 4
                            }
                        }
                    ],
                    "should": [
                        {
                            "multi_match": {
                                "query": query,
                                "fields": [
                                    "content^6",
                                    "author^2",
                                    "tractate_tag_name^3",
                                    "tractate_tag_name_content^4"
                                ],
                                "analyzer": "gm_default_index",
                                "operator": "or",
                                "type": "best_fields"
                            }
                        }
                    ],
                    "minimum_should_match": 1
                }
            }
        }
    },
    "sort": [
        {
            "content_simi_bol_show": {
                "order": "desc"
            }
        },
        {
            "_score": {
                "order": "desc"
            }
        },
        {
            "search_new_smr": {
                "order": "desc"
            }
        }
    ],
    "_source": {
        "include": [
            "id",
            "highlight",
            "keynote_sentence"
        ]
    },
    "highlight": {
        "fields": {
            "keynote_sentence": {
                "highlight_query": {
                    "bool": {
                        "must": {
                            "terms": {
                                "keynote_sentence": [
                                    query
                                ]
                            }
                        }
                    }
                }
            }
        },
        "fragment_size": 10000,
        "pre_tags": [
            "<ems>"
        ],
        "post_tags": [
            "</ems>"
        ]
    }
}
        # heasers = {
        #     "Content-Type": "application/x-www-form-urlencoded"
        # }
        with self.client.post('/gm-dbmw-tractate-read/_search', json=data,verify=False,
                                    auth=tuple(auth.split(':', 1)),timeout=1, catch_response=True) as response:
            if response.status_code != 200:
                response.failure("Got wrong response")
                raise RescheduleTask()
            if "Failed" in response.text:
                response.failure("Got wrong response")
        # response = requests.post('http://172.16.52.25/gm-dbmw-service-read/_search', json=query, verify=False,auth=("elastic","elastic:gengmei!@#"))

        # print(response.text)
        # self.client.get("/hello")
        # self.client.get("/world")
