86 lines
3.7 KiB
Python
86 lines
3.7 KiB
Python
# coding: utf-8
|
||
import json
|
||
|
||
import requests
|
||
from base_framework.public_tools.custom_error import BusinessError
|
||
|
||
class ElasticsearchApi:
|
||
"""
|
||
| 功能说明: | 查询Elasticsearch |
|
||
| 作者信息: | 作者 huaxuemin |
|
||
| 修改时间: | 2022-12-05 |
|
||
"""
|
||
|
||
def __init__(self):
|
||
self.es_url = "http://es-cn-zvp2bgn8a004cbosn.elasticsearch.aliyuncs.com:9200"
|
||
self.headers = {"Authorization": "Basic ZWxhc3RpYzpMa3N3aV5hbEl3"}
|
||
|
||
def kw_es_query(self, es_query_body, index="user_personas_index_qa", es_url=None, headers=None):
|
||
"""
|
||
| 功能说明: | 查询es |
|
||
| 输入参数: |
|
||
| | es_query_body | es请求参数,符合es语法 |
|
||
| | index | 索引 |
|
||
| | es_url | es_url |
|
||
| 返回参数: | json |
|
||
| 作者信息: | 作者 huaxuemin | 修改时间 2022-12-05 |
|
||
说明:根据es语法查询es
|
||
"""
|
||
es_url = es_url if es_url else self.es_url
|
||
req_es_url = es_url + "/" + index + "/" + "_search"
|
||
headers = self.headers.update(headers) if headers else self.headers
|
||
try:
|
||
res = requests.post(req_es_url, json=es_query_body, headers=headers)
|
||
return json.loads(res.text)
|
||
except Exception as e:
|
||
return e
|
||
|
||
def kw_es_replace(self, es_id, es_replace_body, index="user_personas_index_qa", es_url=None, headers=None):
|
||
"""
|
||
| 功能说明: | 根据id替换es数据 |
|
||
| 输入参数: |
|
||
| | es_id | es_id |
|
||
| | es_query_body | es请求参数,符合es语法 |
|
||
| | index | 索引 |
|
||
| | es_url | es_url |
|
||
| 返回参数: | json |
|
||
| 作者信息: | 作者 huaxuemin | 修改时间 2022-12-05 |
|
||
说明:根据es语法替换es数据
|
||
"""
|
||
es_url = es_url if es_url else self.es_url
|
||
req_es_url = es_url + "/" + index + "/" + "_doc" + "/" + es_id
|
||
headers = self.headers.update(headers) if headers else self.headers
|
||
try:
|
||
res = requests.post(req_es_url, json=es_replace_body, headers=headers)
|
||
return json.loads(res.text)
|
||
except Exception as e:
|
||
return e
|
||
|
||
def kw_dbs_to_es(self, index_name, env="qa", es_svr="db-to-es"):
|
||
"""
|
||
| 功能说明 | 同步某个索引的es数据 |
|
||
| 请求参数名 | 说明 | 类型 | 是否必填 | 如无要求时的值 |
|
||
| index_name | 索引名称 | string | 0 | peppa-classes-supply |
|
||
| env | 环境,qa,sim | string | 0 | qa |
|
||
| es_svr | ES服务,db-to-es,teach-to-es等 | string | 0 | db-to-es |
|
||
:return
|
||
详见: https://tm.huohua.cn/162891389180100609/articles/215540479291179010
|
||
教务接口切换ES详见apollo配置:peppa-teach-common teach.common change.to.es
|
||
"""
|
||
if env not in ("qa", "sim"):
|
||
raise BusinessError("只支持qa和sim")
|
||
resp = requests.get(url="http://{}.{}.huohua.cn?index={}".format(es_svr, env, index_name))
|
||
if resp.status_code != 200:
|
||
raise Exception('同步失败,错误信息:{}'.format(resp.text))
|
||
return True
|
||
|
||
|
||
if __name__ == '__main__':
|
||
es = ElasticsearchApi()
|
||
# print(es.kw_dbs_to_es(index_name='peppa-classes-supply'))
|
||
q_sql = {"query":{"bool":{"must":[{"term":{"classes.business_region":"101"}},{"term":{"classes.year":"2023"}}],"must_not":[],"should":[]}},"from":0,"size":10,"sort":[{"classes.id":{"order":"desc"}}],"aggs":{}}
|
||
q_url = "http://10.250.200.194:9200"
|
||
rsp = es.kw_es_query(es_query_body=q_sql, es_url=q_url, index="peppa-classes-supply2")
|
||
print(rsp)
|
||
|