fix: es8会话记录查询不到命令

This commit is contained in:
wangruidong 2024-06-12 15:47:33 +08:00 committed by w940853815
parent 68244b2b37
commit 3608b025e5

View File

@ -43,7 +43,8 @@ class NotSupportElasticsearch8(JMSException):
class ESClient(object): class ESClient(object):
def __new__(cls, *args, **kwargs): def __new__(cls, *args, **kwargs):
version = kwargs.pop('version') hosts = kwargs.get('hosts', [])
version = get_es_client_version(hosts=hosts)
if version == 6: if version == 6:
return ESClientV6(*args, **kwargs) return ESClientV6(*args, **kwargs)
if version == 7: if version == 7:
@ -94,8 +95,8 @@ class ESClientV8(ESClientBase):
return {field: {'order': direction}} return {field: {'order': direction}}
def get_es_client_version(**kwargs): def get_es_client_version(hosts, **kwargs):
es = kwargs.get('es') es = Elasticsearch(hosts=hosts, max_retries=0, **kwargs)
info = es.info() info = es.info()
version = int(info['version']['number'].split('.')[0]) version = int(info['version']['number'].split('.')[0])
return version return version
@ -112,9 +113,7 @@ class ES(object):
ignore_verify_certs = kwargs.pop('IGNORE_VERIFY_CERTS', False) ignore_verify_certs = kwargs.pop('IGNORE_VERIFY_CERTS', False)
if ignore_verify_certs: if ignore_verify_certs:
kwargs['verify_certs'] = None kwargs['verify_certs'] = None
self.es = Elasticsearch(hosts=hosts, max_retries=0, **kwargs) self.client = ESClient(hosts=hosts, max_retries=0, **kwargs)
self.version = get_es_client_version(es=self.es)
self.client = ESClient(version=self.version, hosts=hosts, max_retries=0, **kwargs)
self.es = self.client.es self.es = self.client.es
self.index_prefix = self.config.get('INDEX') or 'jumpserver' self.index_prefix = self.config.get('INDEX') or 'jumpserver'
self.is_index_by_date = bool(self.config.get('INDEX_BY_DATE', False)) self.is_index_by_date = bool(self.config.get('INDEX_BY_DATE', False))
@ -227,11 +226,15 @@ class ES(object):
def _filter(self, query: dict, from_=None, size=None, sort=None): def _filter(self, query: dict, from_=None, size=None, sort=None):
body = self.get_query_body(**query) body = self.get_query_body(**query)
search_params = {
data = self.es.search( 'index': self.query_index,
index=self.query_index, body=body, 'body': body,
from_=from_, size=size, sort=sort 'from_': from_,
) 'size': size
}
if sort is not None:
search_params['sort'] = sort
data = self.es.search(**search_params)
source_data = [] source_data = []
for item in data['hits']['hits']: for item in data['hits']['hits']: