def log_message(self, message): es = get_elastic() if not es: return try: es.index(index="message-log", doc_type='message', body=message) except: print('Unable to log message to Elasticsearch.')
def log_user(self, profile): user = {'uid': self.uid, 'profile': profile} es = get_elastic() if not es: return try: es.create(index="message-log", id=user['uid'], doc_type='user', body=user) except: print('Unable to log user profile to Elasticsearch.')
def log_user(request, uid, page=1): page = int(page) if page else 1 es = get_elastic() if not es: return HttpResponse() res = es.search(index="message-log", doc_type='message', body={ "size": 50, "from": 50 * (page - 1), "query": { "bool": { "filter": { "term": { "uid": uid } } } }, "sort": { "created": { "order": "desc" } } }) messages = [] previous = None for hit in res['hits']['hits'][::-1]: message = hit['_source'] message['switch'] = previous != message['is_user'] previous = message['is_user'] response = message.get('response') elements = response.get('elements') if response else None if elements: message['elementWidth'] = len(elements) * 215 message['json'] = json.dumps(message) messages.append(message) context = {'messages': messages} template = loader.get_template('golem/log_user.html') return HttpResponse(template.render(context, request))
def log(request, user_limit): user_limit = int(user_limit) if user_limit else 100 es = get_elastic() if not es: return HttpResponse('not able to connect to elasticsearch') res = es.search(index="message-log", doc_type='message', body={ "size": 0, "aggs": { "uids": { "terms": { "field": "uid", "size": 1000 }, "aggs": { "created": { "max": { "field": "created" } } } } } }) uids = [] for bucket in res['aggregations']['uids']['buckets']: uid = bucket['key'] last_time = bucket['created']['value'] uids.append({'uid': uid, 'last_time': last_time}) uids = sorted(uids, key=lambda uid: -uid['last_time'])[:user_limit] res = es.search(index="message-log", doc_type='user', body={ "size": user_limit, "query": { "bool": { "filter": { "terms": { "uid": [u['uid'] for u in uids] } } } } }) user_map = { user['_source']['uid']: user['_source'] for user in res['hits']['hits'] } users = [ user_map[u['uid']] if u['uid'] in user_map else { 'uid': u['uid'] } for u in uids ] context = {'users': users} print(users) template = loader.get_template('golem/log.html') return HttpResponse(template.render(context, request))