[2023-02-09 09:42:08,856][ERROR][bili_activity base ana] RequestError(400, 'parsing_exception', '[terms] query does not support [mission_id]')
Traceback (most recent call last):
File "/home/admin/apps/acq-bili-sync/task/__init__.py", line 124, in run
for data in self.index_data():
File "/home/admin/apps/acq-bili-sync/task/bili_activity.py", line 300, in index_data
for datas in self.process():
File "/home/admin/apps/acq-bili-sync/task/bili_activity.py", line 278, in process
result1 = self.get_videos_type_percent(client, mission_id)
File "/home/admin/apps/acq-bili-sync/task/bili_activity.py", line 159, in get_videos_type_percent
resp = client.search(BILI_VIDEO_INDEX, "_doc", body)
File "/home/admin/apps/acq-bili-sync/common/es.py", line 33, in search
return self.client.search(index, doc_type, body, **kwargs)
File "/home/admin/env/acq-bili-sync/lib/python3.6/site-packages/elasticsearch/client/utils.py", line 84, in _wrapped
return func(*args, params=params, **kwargs)
File "/home/admin/env/acq-bili-sync/lib/python3.6/site-packages/elasticsearch/client/__init__.py", line 852, in search
"GET", _make_path(index, doc_type, "_search"), params=params, body=body
File "/home/admin/env/acq-bili-sync/lib/python3.6/site-packages/elasticsearch/transport.py", line 358, in perform_request
timeout=timeout,
File "/home/admin/env/acq-bili-sync/lib/python3.6/site-packages/elasticsearch/connection/http_urllib3.py", line 231, in perform_request
self._raise_error(response.status, raw_data)
File "/home/admin/env/acq-bili-sync/lib/python3.6/site-packages/elasticsearch/connection/base.py", line 230, in _raise_error
status_code, error_message, additional_info
elasticsearch.exceptions.RequestError: RequestError(400, 'parsing_exception', '[terms] query does not support [mission_id]')
因为查询es查询里面使用的是terms
,它需要的值是列表([])类型
的故报错
对字段值进行判定是否是list类型,如果不是,转换成list类型即可
from common import EsClient
id='123'
if not isinstance(id, list):
id = [id]
body = {
"query": {
"terms": {
"mission_id": id
}
},
"aggs": {
"terms": {
"terms": {
"field": "first_type",
"size": 100
}
}
}
}
print(body)
es=EsClient()
resp = es.search( "bili_video_data", "_doc", body)