def ajax_search(request, query, search_idx, ajax): ''' Return count or paginated elastic result as a JSON ''' if ajax == 'count': elastic = Search.field_search_query(query, fields=fields, idx=search_idx) return JsonResponse(elastic.get_count()) search_from = request.POST.get("from") size = request.POST.get("size") elastic = Search.field_search_query(query, fields=fields, search_from=search_from, size=size, idx=search_idx) return JsonResponse(elastic.get_json_response())
def search(request, query, search_idx=ElasticSettings.indices_str()): ''' Renders a elastic results page based on the query ''' aggs = Aggs(Agg("categories", "terms", {"field": "_type", "size": 0})) elastic = Search.field_search_query(query, aggs=aggs, fields=fields, search_from=0, size=20, idx=search_idx) result = elastic.search() context = {} context['diseases'] = _add_diseases() context['total'] = result.hits_total context['db'] = result.idx context['size'] = result.size context['query'] = result.query context["idxs"] = _categories(result.idx) return render(request, 'search/searchresults.html', context, content_type='text/html')
def _call_elasticsearch(self, name, fields, indexName): ''' Call elasticsearch ''' elastic = Search.field_search_query(name, fields=fields, search_from=0, size=20, idx=indexName) json_response = elastic.get_json_response() context = {} content = [] for hit in json_response['hits']['hits']: hit['_source']['idx_type'] = hit['_type'] hit['_source']['idx_id'] = hit['_id'] if 'highlight' in hit: hit['_source']['highlight'] = hit['highlight'] content.append(hit['_source']) context["data"] = content context["total"] = json_response['hits']['total'] return context